@@ -30,13 +30,13 @@ if (str == NULL) { length = 0; string = NULL; } else { length = strlen(str); - if ((string = [self getMem: length]) == NULL) + if ((string = [self getMem: length + 1]) == NULL) return NULL; - memcpy(string, str, length); + memcpy(string, str, length + 1); } } return self; } @@ -63,13 +63,13 @@ return self; } newlen = strlen(str); - if ((newstr = [self getMem: newlen]) == NULL) + if ((newstr = [self getMem: newlen + 1]) == NULL) return nil; - memcpy(newstr, str, newlen); + memcpy(newstr, str, newlen + 1); if (string != NULL) [self freeMem: string]; length = newlen; @@ -97,15 +97,13 @@ /* FIXME: Add error handling */ if ((newstr = [self resizeMem: string toSize: newlen + 1]) == NULL) return nil; - string = newstr; - - memcpy(string + length, str, strlength); - string[newlen] = '\0'; + memcpy(newstr + length, str, strlength + 1); length = newlen; + string = newstr; return self; } @end