Index: /trunk/src/kmk/incdep.c
===================================================================
--- /trunk/src/kmk/incdep.c	(revision 1823)
+++ /trunk/src/kmk/incdep.c	(revision 1824)
@@ -628,12 +628,14 @@
       {
         void *free_me = rec_vd;
-        do_variable_definition (rec_vd->flocp,
-                                strcache_add_len(rec_vd->name, rec_vd->name_length),
-                                rec_vd->value,
-                                rec_vd->origin,
-                                rec_vd->flavor,
-                                rec_vd->target_var);
+        do_variable_definition_2 (rec_vd->flocp,
+                                  strcache_add_len(rec_vd->name, rec_vd->name_length),
+                                  rec_vd->value,
+                                  rec_vd->value_len,
+                                  0,
+                                  rec_vd->value,
+                                  rec_vd->origin,
+                                  rec_vd->flavor,
+                                  rec_vd->target_var);
         free (rec_vd->name);
-        free (rec_vd->value);
         rec_vd = rec_vd->next;
         free (free_me);
@@ -772,4 +774,5 @@
                             unsigned int name_length,
                             char *value,
+                            unsigned int value_length,
                             enum variable_origin origin,
                             enum variable_flavor flavor,
@@ -777,8 +780,6 @@
 {
   if (!cur->is_worker)
-    {
-      do_variable_definition (flocp, name, value, origin, flavor, target_var);
-      free (value);
-    }
+    do_variable_definition_2 (flocp, name, value, value_length, 0, value,
+                              origin, flavor, target_var);
 #ifdef PARSE_IN_WORKER
   else
@@ -789,4 +790,5 @@
       rec->name_length = name_length;
       rec->value = value;
+      rec->value_length = value_length;
       rec->origin = origin;
       rec->flavor = flavor;
@@ -800,4 +802,6 @@
       cur->recorded_variable_defs_tail = rec;
     }
+#else
+  (void)name_length;
 #endif
 }
@@ -1180,6 +1184,6 @@
               else
                 incdep_record_variable_def (curdep,
-                                            f, var, var_len, value, o_file, flavor,
-                                            0 /* not target var */);
+                                            f, var, var_len, value, value_len,
+                                            o_file, flavor, 0 /* not target var */);
             }
           else
