diff --git a/misc/registry.c b/misc/registry.c
index 21ed173..438376a 100644
--- a/misc/registry.c
+++ b/misc/registry.c
@@ -92,15 +92,15 @@
     return res;
 }
 
-/* _strdupnA [Internal] */
-static LPSTR _strdupnA(LPCSTR str,size_t len)
+/* _xstrdup [Internal] */
+static LPSTR _xstrdup(LPCSTR str)
 {
     LPSTR ret;
+    size_t len = strlen(str) + 1;
 
     if (!str) return NULL;
-    ret = _xmalloc( len + 1 );
+    ret = _xmalloc( len );
     memcpy( ret, str, len );
-    ret[len] = 0x00;
     return ret;
 }
 
@@ -698,9 +698,12 @@
 
     if (level <= 0) {
         /* create new subkey name */
-        new_key_name = _strdupnA(key_name,strlen(key_name)+dkh->keynamelen+1);
-        if (strcmp(new_key_name,"") != 0) strcat(new_key_name,"\\");
-        strncat(new_key_name,dkh->name,dkh->keynamelen);
+        size_t len = strlen(key_name);
+        new_key_name = _xmalloc(len+dkh->keynamelen+2);
+        memcpy( new_key_name, key_name, len );
+        if (len) new_key_name[len++] = '\\';
+        memcpy( new_key_name + len, dkh->name, dkh->keynamelen );
+        new_key_name[len + dkh->keynamelen] = 0;
 
         /* walk sibling keys */
         if (dke->next != 0xffffffff ) {
@@ -730,7 +733,7 @@
             _dump_strAtoW(new_key_name,strlen(new_key_name),f,"[]");
             fprintf(f,"]\n");
         }
-    } else new_key_name = _strdupnA(key_name,strlen(key_name));
+    } else new_key_name = _xstrdup(key_name);
 
     /* next sub key */
     if (dke->nextsub != 0xffffffff) {
@@ -1008,9 +1011,12 @@
     /* create the new key */
     if (level <= 0) {
         /* create new subkey name */
-        new_key_name = _strdupnA(key_name,strlen(key_name)+nk->name_len+1);
-        if (strcmp(new_key_name,"") != 0) strcat(new_key_name,"\\");
-        strncat(new_key_name,nk->name,nk->name_len);
+        size_t len = strlen(key_name);
+        new_key_name = _xmalloc( len+nk->name_len+2 );
+        memcpy( new_key_name, key_name, len );
+        if (len) new_key_name[len++] = '\\';
+        memcpy( new_key_name + len, nk->name, nk->name_len );
+        new_key_name[len + nk->name_len] = 0;
 
         /* write the key path (something like [Software\\Microsoft\\..]) only if:
            1) key has some values
@@ -1038,7 +1044,7 @@
                 return FALSE;
             }
         }
-    } else new_key_name = _strdupnA(key_name,strlen(key_name));
+    } else new_key_name = _xstrdup(key_name);
 
     /* loop through the subkeys */
     if (nk->nr_subkeys) {
