aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--generic/Item.c17
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 = "";