diff options
Diffstat (limited to 'generic/Item.c')
-rw-r--r-- | generic/Item.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/generic/Item.c b/generic/Item.c index 2668f1a..494e069 100644 --- a/generic/Item.c +++ b/generic/Item.c @@ -450,12 +450,10 @@ ZnConfigureAttributes(WidgetInfo *wi, { char *text = ""; str = Tcl_GetString(args[i+1]); - if (strcmp(str, *((char **) valp)) != 0) { - if (strlen(str) != 0) { - text = (char *) ZnMalloc(strlen(str)+1); - strcpy(text, str); - } - if (strlen(*((char **) valp)) != 0) { + if (!*((char **) valp) || strcmp(str, *((char **) valp)) != 0) { + text = (char *) ZnMalloc(strlen(str)+1); + strcpy(text, str); + if (*((char **) valp)) { ZnFree(*((char **) valp)); } *((char **) valp) = text; @@ -1139,7 +1137,12 @@ AttributeToObj(WidgetInfo *wi, case ZN_CONFIG_STRING: case ZN_CONFIG_MAP_INFO: str = *((char **) valp); - Tcl_SetStringObj(result, str, strlen(str)); + if (str) { + Tcl_SetStringObj(result, str, strlen(str)); + } + else { + Tcl_SetStringObj(result, "", 0); + } break; case ZN_CONFIG_FONT: str = ""; |