return NULL on out of memory
diff --git a/lib/escape.c b/lib/escape.c
index b233600..87d3a79 100644
--- a/lib/escape.c
+++ b/lib/escape.c
@@ -39,12 +39,16 @@
 char *curl_escape(const char *string, int length)
 {
   size_t alloc = (length?(size_t)length:strlen(string))+1;  
-  char *ns = malloc(alloc);
+  char *ns;
   char *testing_ptr = NULL;
   unsigned char in;
   size_t newlen = alloc;
   int strindex=0;
 
+  ns = malloc(alloc);
+  if(!ns)
+    return NULL;
+
   length = alloc-1;
   while(length--) {
     in = *string;
@@ -90,9 +94,8 @@
   int strindex=0;
   long hex;
  
-  if( !ns ) {
+  if( !ns )
     return NULL;
-  }  
   
   while(--alloc > 0) {
     in = *string;