NULL as err_format parametr in update_error
authorMarcel Poul <marcel.poul@cern.ch>
Tue, 14 Feb 2012 12:22:03 +0000 (12:22 +0000)
committerMarcel Poul <marcel.poul@cern.ch>
Tue, 14 Feb 2012 12:22:03 +0000 (12:22 +0000)
emi.canl.canl-c/src/canl_err.c

index b691687..f273d8f 100644 (file)
@@ -21,8 +21,8 @@ canl_err_code update_error (glb_ctx *cc, unsigned long err_code,
     if (!cc)
         return EINVAL;
 
-    if (err_format == NULL) {
-        return EINVAL;
+    if (err_format == NULL || err_format[0] == '\0') {
+        goto wo_msg;
     }
 
     va_start(ap, err_format);
@@ -33,13 +33,15 @@ canl_err_code update_error (glb_ctx *cc, unsigned long err_code,
         va_end(ap);
         return EINVAL;
     }
+    va_end(ap);
 
     ret = resolve_error_code(cc, err_code, err_orig);
+wo_msg:
     update_error_msg(cc, new_msg);
-    free(new_msg);
-    va_end(ap);
+    if (new_msg)
+        free(new_msg);
 
-    return ret; 
+    return ret;
 }
 
 /* If there was some error message in ctx, delete it and make new */
@@ -128,8 +130,10 @@ update_error_msg(canl_ctx cc, const char *new_msg)
     }
     
     new_error[0] = '\0';
-    strncpy(new_error, new_msg, err_new_msg_len + 1);
-    strncat(new_error, separ, separ_len + 1);
+    if (new_msg) {
+        strncpy(new_error, new_msg, err_new_msg_len + 1);
+        strncat(new_error, separ, separ_len + 1);
+    }
     strncat(new_error, code_str, code_len + 1);
     strncat(new_error, separ, separ_len + 1);
     if (ctx->err_msg) {