]> mj.ucw.cz Git - libucw.git/blobdiff - lib/conf2.c
conf2: 2 bugfixes concerning dynamic arrays and lists
[libucw.git] / lib / conf2.c
index 57e9c353c7a7ce0ee2e1e5fbc0373fbf636b93cf..4fe9280bd71cad5fb9300f17de6bf1519cf9f55f 100644 (file)
@@ -696,7 +696,7 @@ interpret_set_item(struct cf_item *item, int number, byte **pars, int *processed
     case CC_LIST:
       if (!allow_dynamic)
        return "Lists cannot be used here";
-      return interpret_add_list(item, number, pars, ptr, processed, OP_SET);
+      return interpret_add_list(item, number, pars, processed, ptr, OP_SET);
     default:
       ASSERT(0);
   }
@@ -1299,12 +1299,15 @@ dump_item(struct fastbuf *fb, struct cf_item *item, int level, void *ptr)
   if (item->cls == CC_STATIC) {
     for (i=0; i<item->number; i++)
       dump_basic(fb, ptr + i * parsers[type].size, type);
-  } else if (0 && item->cls == CC_DYNAMIC) {
+  } else if (item->cls == CC_DYNAMIC) {
     ptr = * (void**) ptr;
-    int real_nr = * (int*) (ptr - parsers[type].size);
-    bprintf(fb, "##%d ", real_nr);
-    for (i=0; i<real_nr; i++)
-      dump_basic(fb, ptr + i * parsers[type].size, type);
+    if (ptr) {
+      int real_nr = * (int*) (ptr - parsers[type].size);
+      bprintf(fb, "##%d ", real_nr);
+      for (i=0; i<real_nr; i++)
+       dump_basic(fb, ptr + i * parsers[type].size, type);
+    } else
+      bprintf(fb, "NULL ");
   }
   bputc(fb, '\n');
   if (item->cls == CC_SECTION)