]> git.saurik.com Git - apple/xnu.git/blobdiff - libkern/kxld/kxld_array.c
xnu-2782.20.48.tar.gz
[apple/xnu.git] / libkern / kxld / kxld_array.c
index b04a6045ac1b9eee216bab7f7448c04b03565394..55d009ba46b6c88e0a23962fddb1cfe0bf64c3e4 100644 (file)
@@ -86,8 +86,8 @@ kxld_array_init(KXLDArray *array, size_t itemsize, u_int nitems)
          */
         if (array->maxitems < nitems) {
             STAILQ_FOREACH_SAFE(srcpool, &array->pools, entries, tmp) {
-                STAILQ_INSERT_TAIL(&srcpools, srcpool, entries);
                 STAILQ_REMOVE(&array->pools, srcpool, kxld_array_pool, entries);
+                STAILQ_INSERT_TAIL(&srcpools, srcpool, entries);
             }
             srcpool_capacity = array->pool_capacity;
             bzero(array, sizeof(*array));
@@ -139,6 +139,9 @@ array_init(KXLDArray *array, size_t itemsize, u_int nitems)
 {
     kern_return_t rval = KERN_FAILURE;
     KXLDArrayPool *pool = NULL;
+    
+    require_action(itemsize, finish, rval=KERN_INVALID_ARGUMENT);
+    require_action(array->npools < 2, finish, rval=KERN_INVALID_ARGUMENT);
  
     array->itemsize = itemsize;