Skip to content

Commit bdc6bcc

Browse files
committed
make -stylename of ItemStyle working (fix for GH#111)
Need to use a Tcl_Obj for the stylename, because the objv shuffling hack could destroy the original value of the temporary styleName variable.
1 parent 3a13aed commit bdc6bcc

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

pTk/mTk/tixGeneric/tixDiStyle.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ Tix_ItemStyleCmd(clientData, interp, argc, argv)
197197
{
198198
Tix_DItemInfo * diTypePtr;
199199
Tk_Window tkwin = (Tk_Window)clientData;
200-
char * styleName = NULL;
200+
Tcl_Obj * styleName = NULL; /* note: in original Tix this was a char*, need to use a Tcl_Obj because of the shuffle hack later */
201201
Tix_DispData dispData;
202202
char buff[100];
203203
int i, n;
@@ -235,16 +235,16 @@ Tix_ItemStyleCmd(clientData, interp, argc, argv)
235235
continue;
236236
}
237237
if (strncmp(argv[i], "-stylename", len) == 0) {
238-
styleName = argv[i+1];
239-
if (FindStyle(styleName, interp) != NULL) {
238+
styleName = Tcl_NewStringObj(argv[i+1], -1);
239+
if (FindStyle(Tcl_GetString(styleName), interp) != NULL) {
240240
Tcl_AppendResult(interp, "style \"", argv[i+1],
241241
"\" already exist", NULL);
242242
return TCL_ERROR;
243243
}
244244
continue;
245245
}
246246

247-
if (n!=i) {
247+
if (n!=i) { /* shuffle objv to remove -refwindow and -stylename */
248248
#if 0
249249
objv[n] = objv[i];
250250
objv[n+1] = objv[i+1];
@@ -265,15 +265,15 @@ Tix_ItemStyleCmd(clientData, interp, argc, argv)
265265
* (ToDo: check if the name has already been used)
266266
*/
267267
sprintf(buff, "tixStyle%d", counter++);
268-
styleName = buff;
268+
styleName = Tcl_NewStringObj(buff, -1);
269269
}
270270

271271
dispData.interp = interp;
272272
dispData.display = Tk_Display(tkwin);
273273
dispData.tkwin = tkwin;
274274

275275
if ((stylePtr = GetDItemStyle(&dispData, diTypePtr,
276-
styleName, NULL)) == NULL) {
276+
Tcl_GetString(styleName), NULL)) == NULL) {
277277
return TCL_ERROR;
278278
}
279279
if (StyleConfigure(interp, stylePtr, argc-2, argv+2, 0) != TCL_OK) {
@@ -284,7 +284,7 @@ Tix_ItemStyleCmd(clientData, interp, argc, argv)
284284
RefWindowStructureProc, (ClientData)stylePtr);
285285

286286
Tcl_ResetResult(interp);
287-
Tcl_SetObjResult(interp, LangObjectObj( interp, styleName));
287+
Tcl_SetObjResult(interp, LangObjectObj(interp, Tcl_GetString(styleName)));
288288
return TCL_OK;
289289
}
290290

0 commit comments

Comments
 (0)