Fix a memory allocation problem 0.2.1
authorJ. Ali Harlow <ali@juiblex.co.uk>
Wed, 26 Aug 2009 21:34:27 +0000 (22:34 +0100)
committerJ. Ali Harlow <ali@juiblex.co.uk>
Wed, 26 Aug 2009 21:34:27 +0000 (22:34 +0100)
whelk/wait.c

index ed0f4b9..d85f793 100644 (file)
@@ -5,7 +5,7 @@
 int whelk_wait_add_object(struct whelk_wait *wait,HANDLE object)
 {
     HANDLE *new;
-    new=realloc(wait->objects,wait->no_objects+1);
+    new=realloc(wait->objects,(wait->no_objects+1)*sizeof(*wait->objects));
     if (!new)
        return -1;
     wait->objects=new;
@@ -19,6 +19,8 @@ void whelk_wait_remove_object(struct whelk_wait *wait,HANDLE object)
     for(i=0;i<wait->no_objects;i++)
        if (wait->objects[i]==object)
            break;
+    if (i==wait->no_objects)
+       return;
     if (i!=wait->no_objects-1)
        memcpy(wait->objects+i,wait->objects+i+1,
          (wait->no_objects-i-1)*sizeof(*wait->objects));
@@ -44,4 +46,5 @@ HANDLE whelk_wait_poll(struct whelk_wait *wait)
 void whelk_wait_free(struct whelk_wait *wait)
 {
     free(wait->objects);
+    wait->objects=NULL;
 }