Skip to content

Commit

Permalink
fixed a very, very rare and very, very little memory leak
Browse files Browse the repository at this point in the history
  • Loading branch information
jpbarrette committed Jan 8, 2003
1 parent ca134d5 commit 6a7e53a
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions lib/escape.c
Expand Up @@ -41,6 +41,7 @@ char *curl_escape(const char *string, int length)
{
int alloc = (length?length:(int)strlen(string))+1;
char *ns = malloc(alloc);
char *testing_ptr = NULL;
unsigned char in;
int newlen = alloc;
int index=0;
Expand All @@ -55,9 +56,14 @@ char *curl_escape(const char *string, int length)
newlen += 2; /* the size grows with two, since this'll become a %XX */
if(newlen > alloc) {
alloc *= 2;
ns = realloc(ns, alloc);
if(!ns)
testing_ptr = realloc(ns, alloc);
if(!testing_ptr) {
free( ns );
return NULL;
}
else {
ns = testing_ptr;
}
}
sprintf(&ns[index], "%%%02X", in);

Expand All @@ -80,6 +86,10 @@ char *curl_unescape(const char *string, int length)
unsigned char in;
int index=0;
unsigned int hex;

if( !ns ) {
return NULL;
}

while(--alloc > 0) {
in = *string;
Expand All @@ -97,7 +107,6 @@ char *curl_unescape(const char *string, int length)
}
ns[index]=0; /* terminate it */
return ns;

}

void curl_free(void *p)
Expand Down

0 comments on commit 6a7e53a

Please sign in to comment.