]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/client/fuse_ll.cc
update sources to v12.2.0
[ceph.git] / ceph / src / client / fuse_ll.cc
index 1fdd3289a938189b30d34f6d578c137a8c93adc1..d10f7b8143a282251bf8310f36b4071c7fe133ee 100644 (file)
@@ -112,14 +112,15 @@ static int getgroups(fuse_req_t req, gid_t **sgids)
     return 0;
   }
 
-  *sgids = (gid_t*)malloc(c*sizeof(**sgids));
-  if (!*sgids) {
+  gid_t *gids = new (std::nothrow) gid_t[c];
+  if (!gids) {
     return -ENOMEM;
   }
-  c = fuse_req_getgroups(req, c, *sgids);
+  c = fuse_req_getgroups(req, c, gids);
   if (c < 0) {
-    free(*sgids);
-    return c;
+    delete gids;
+  } else {
+    *sgids = gids;
   }
   return c;
 #endif