]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
uclient: small _getdents cleanup
authorSage Weil <sage@newdream.net>
Fri, 21 Aug 2009 20:44:13 +0000 (13:44 -0700)
committerSage Weil <sage@newdream.net>
Fri, 21 Aug 2009 20:44:13 +0000 (13:44 -0700)
src/client/Client.cc

index 4083ccb0e9e235ff73efcba9245b991e8bf1954c..f1f1774d497f5611450013ed8aca8802b4d10fbb 100644 (file)
@@ -3677,7 +3677,9 @@ int Client::_getdents(DIR *dir, char *buf, int buflen, bool fullent)
     int dlen = ent[pos].d_name.length();
     if (fullent)
       dlen += sizeof(struct dirent);
-    if (ret + dlen + 1 > buflen) {
+    else
+      dlen += 1; // null terminator
+    if (ret + dlen > buflen) {
       if (!ret)
        return -ERANGE;  // the buffer is too small for the first name!
       return ret;
@@ -3685,8 +3687,8 @@ int Client::_getdents(DIR *dir, char *buf, int buflen, bool fullent)
     if (fullent)
       _readdir_fill_dirent((struct dirent *)(buf + ret), &ent[pos], dirp->offset);
     else
-      memcpy(buf + ret, ent[pos].d_name.c_str(), dlen + 1);
-    ret += dlen + 1;
+      memcpy(buf + ret, ent[pos].d_name.c_str(), dlen);
+    ret += dlen;
 
     pos++;
     dirp->offset++;