]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crush/CrushWrapper: keep weights and/or ids null if empty
authorSage Weil <sage@redhat.com>
Wed, 9 Aug 2017 21:27:49 +0000 (17:27 -0400)
committerSage Weil <sage@redhat.com>
Sun, 13 Aug 2017 19:00:41 +0000 (15:00 -0400)
Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit b3838c83d501bf2f40bb799300cde049123b0eb0)

src/crush/CrushWrapper.cc

index 262db5876eb27c7f2d9721c7704b54e8529f722a..ee8c0ac0bc8648c7335e34e125ad6faff338bdb4 100644 (file)
@@ -1785,15 +1785,23 @@ int CrushWrapper::bucket_remove_item(crush_bucket *bucket, int item)
       assert(weight_set->size - 1 == new_size);
       for (__u32 k = position; k < new_size; k++)
        weight_set->weights[k] = weight_set->weights[k+1];
-      weight_set->weights = (__u32*)realloc(weight_set->weights,
-                                           new_size * sizeof(__u32));
+      if (new_size) {
+       weight_set->weights = (__u32*)realloc(weight_set->weights,
+                                             new_size * sizeof(__u32));
+      } else {
+       weight_set->weights = NULL;
+      }
       weight_set->size = new_size;
     }
     if (arg->ids_size) {
       assert(arg->ids_size - 1 == new_size);
       for (__u32 k = position; k < new_size; k++)
        arg->ids[k] = arg->ids[k+1];
-      arg->ids = (__s32 *)realloc(arg->ids, new_size * sizeof(__s32));
+      if (new_size) {
+       arg->ids = (__s32 *)realloc(arg->ids, new_size * sizeof(__s32));
+      } else {
+       arg->ids = NULL;
+      }
       arg->ids_size = new_size;
     }
   }