if (!cntl_value)
return ECGCONTROLLERCREATEFAILED;
- if (strlen(value) >= sizeof(cntl_value->value)) {
- fprintf(stderr, "value exceeds the maximum of %d characters\n",
- sizeof(cntl_value->value) - 1);
- free(cntl_value);
- return ECGCONFIGPARSEFAIL;
- }
-
strncpy(cntl_value->name, name, sizeof(cntl_value->name));
cntl_value->name[sizeof(cntl_value->name)-1] = '\0';
- strncpy(cntl_value->value, value, sizeof(cntl_value->value));
- cntl_value->value[sizeof(cntl_value->value)-1] = '\0';
- cntl_value->dirty = true;
+
+ if (value) {
+ if (strlen(value) >= sizeof(cntl_value->value)) {
+ fprintf(stderr, "value exceeds the maximum of %d characters\n",
+ sizeof(cntl_value->value) - 1);
+ free(cntl_value);
+ return ECGCONFIGPARSEFAIL;
+ }
+
+ strncpy(cntl_value->value, value, sizeof(cntl_value->value));
+ cntl_value->value[sizeof(cntl_value->value)-1] = '\0';
+ cntl_value->dirty = true;
+ }
+
controller->values[controller->index] = cntl_value;
controller->index++;