summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/im/ximcp/imRm.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/modules/im/ximcp/imRm.c b/modules/im/ximcp/imRm.c
index 9f5b99bc..5dec292d 100644
--- a/modules/im/ximcp/imRm.c
+++ b/modules/im/ximcp/imRm.c
@@ -510,13 +510,21 @@ _XimDefaultResName(
Xic ic = (Xic)parm;
Xim im = (Xim)ic->core.im;
char **out;
-
+ char *string;
+
if(im->core.res_name == (char *)NULL) {
return True;
}
+ string=strdup(im->core.res_name);
+ if ( string == NULL)
+ return False;
+
out = (char **)((char *)top + info->offset);
- *out = im->core.res_name;
+
+ Xfree(*out); /* free old im->core.res_name */
+ *out =string;
+
return True;
}
@@ -529,14 +537,22 @@ _XimDefaultResClass(
{
Xic ic = (Xic)parm;
Xim im = (Xim)ic->core.im;
+ char *string;
char **out;
if(im->core.res_class == (char *)NULL) {
return True;
}
+ string=strdup(im->core.res_class);
+ if (string == NULL)
+ return False;
+
out = (char **)((char *)top + info->offset);
- *out = im->core.res_class;
+
+ Xfree(*out); /* free old im->core.res_class */
+ *out = string;
+
return True;
}