Print this page
patch mdb_var_alloc

@@ -392,15 +392,13 @@
  * it will be saved in the mdb_tab_cookie_t.
  */
 void
 mdb_tab_insert(mdb_tab_cookie_t *mcp, const char *name)
 {
-        size_t len, matches, index;
-        uint_t flags;
+        size_t matches, index;
         mdb_var_t *v;
         char *n;
-        const char *nvn;
 
         /*
          * If we have a match set, then we want to verify that we actually match
          * it.
          */

@@ -410,38 +408,19 @@
 
         v = mdb_nv_lookup(&mcp->mtc_nv, name);
         if (v != NULL)
                 return;
 
-        /*
-         * Names that we get passed in may be longer than MDB_NV_NAMELEN which
-         * is currently 31 including the null terminator. If that is the case,
-         * then we're going to take care of allocating a string and holding it
-         * for our caller. Note that we don't need to free it, because we're
-         * allocating this with UM_GC.
-         */
-        flags = 0;
-        len = strlen(name);
-        if (len > MDB_NV_NAMELEN - 1) {
-                n = mdb_alloc(len + 1, UM_SLEEP | UM_GC);
-                (void) strcpy(n, name);
-                nvn = n;
-                flags |= MDB_NV_EXTNAME;
-        } else {
-                nvn = name;
-        }
-        flags |= MDB_NV_RDONLY;
-
-        (void) mdb_nv_insert(&mcp->mtc_nv, nvn, NULL, 0, flags);
+        (void) mdb_nv_insert(&mcp->mtc_nv, name, NULL, 0, MDB_NV_RDONLY);
 
         matches = mdb_tab_size(mcp);
         if (matches == 1) {
-                (void) strlcpy(mcp->mtc_match, nvn, MDB_SYM_NAMLEN);
+                (void) strlcpy(mcp->mtc_match, name, MDB_SYM_NAMLEN);
         } else {
                 index = 0;
                 while (mcp->mtc_match[index] &&
-                    mcp->mtc_match[index] == nvn[index])
+                    mcp->mtc_match[index] == name[index])
                         index++;
 
                 mcp->mtc_match[index] = '\0';
         }
 }