]> mj.ucw.cz Git - libucw.git/blobdiff - lib/conf2.c
Merge with git+ssh://cvs.ucw.cz/projects/sherlock/GIT/sherlock.git#dev-config
[libucw.git] / lib / conf2.c
index 1d58de0e72278aa3b909a819b5841a47089d7eb1..8eb433d11871499400554925905d906a3162ca6d 100644 (file)
@@ -691,7 +691,7 @@ interpret_add_dynamic(struct cf_item *item, int number, byte **pars, int *proces
   uns size = type_size(item->type, item->u.utype);
   ASSERT(size >= sizeof(uns));
   int old_nr = * (int*) (old_p - size);
-  int taken = MIN(number, item->number-old_nr);
+  int taken = MIN(number, ABS(item->number)-old_nr);
   *processed = taken;
   // stretch the dynamic array
   void *new_p = cf_malloc((old_nr + taken + 1) * size) + size;
@@ -804,7 +804,7 @@ interpret_set_item(struct cf_item *item, int number, byte **pars, int *processed
     case CC_DYNAMIC:
       if (!allow_dynamic)
        return "Dynamic array cannot be used here";
-      taken = MIN(number, item->number);
+      taken = MIN(number, ABS(item->number));
       *processed = taken;
       return interpret_set_dynamic(item, taken, pars, ptr);
     case CC_PARSER: