@@ -273,15 +273,15 @@ int
273273Itcl_FindC (
274274 Tcl_Interp * interp , /* interpreter handling this registration */
275275 const char * name , /* symbolic name for procedure */
276- Tcl_CmdProc * * argProcPtr , /* returns (argc,argv) command handler */
276+ Tcl_CmdProc * * argProcPtr , /* returns (argc,argv) command handler, can be NULL */
277277 Tcl_ObjCmdProc * * objProcPtr , /* returns (objc,objv) command handler */
278278 void * * cDataPtr ) /* returns client data */
279279{
280280 Tcl_HashEntry * entry ;
281281 Tcl_HashTable * procTable ;
282282 ItclCfunc * cfunc ;
283+ Tcl_CmdProc * argProc = NULL ; /* assume info won't be found */
283284
284- * argProcPtr = NULL ; /* assume info won't be found */
285285 * objProcPtr = NULL ;
286286 * cDataPtr = NULL ;
287287
@@ -293,13 +293,16 @@ Itcl_FindC(
293293 entry = Tcl_FindHashEntry (procTable , name );
294294 if (entry ) {
295295 cfunc = (ItclCfunc * )Tcl_GetHashValue (entry );
296- * argProcPtr = cfunc -> argCmdProc ;
296+ argProc = cfunc -> argCmdProc ;
297297 * objProcPtr = cfunc -> objCmdProc ;
298298 * cDataPtr = cfunc -> clientData ;
299299 }
300300 }
301301 }
302- return (* argProcPtr != NULL || * objProcPtr != NULL );
302+ if (argProcPtr ) {
303+ * argProcPtr = argProc ;
304+ }
305+ return (((argProcPtr != NULL ) && (argProc != NULL )) || (* objProcPtr != NULL ));
303306}
304307
305308#if TCL_MAJOR_VERSION > 8
@@ -310,14 +313,13 @@ Itcl_FindC2(
310313 Tcl_ObjCmdProc2 * * objProcPtr , /* returns (objc,objv) command handler */
311314 void * * cDataPtr ) /* returns client data */
312315{
313- Tcl_CmdProc * procPtr ;
314- Tcl_ObjCmdProc * regProcPtr ;
315- void * dataPtr ;
316+ Tcl_ObjCmdProc * regProcPtr ;
317+ void * dataPtr ;
316318
317319 * objProcPtr = NULL ; /* assume info won't be found */
318320 * cDataPtr = NULL ;
319321
320- if (Itcl_FindC (interp , name , & procPtr , & regProcPtr , & dataPtr ) == TCL_OK ) {
322+ if (Itcl_FindC (interp , name , NULL , & regProcPtr , & dataPtr )) {
321323 if (regProcPtr == regCmdProc ) {
322324 regInfo * info = (regInfo * )dataPtr ;
323325 * objProcPtr = info -> objProc ;
@@ -326,18 +328,6 @@ Itcl_FindC2(
326328 }
327329 return (* objProcPtr != NULL );
328330}
329- #else
330- int
331- Itcl_FindC2 (
332- Tcl_Interp * interp , /* interpreter handling this registration */
333- const char * name , /* symbolic name for procedure */
334- Tcl_ObjCmdProc * * objProcPtr , /* returns (objc,objv) command handler */
335- void * * cDataPtr ) /* returns client data */
336- {
337- Tcl_CmdProc * argProcPtr ;
338- return Itcl_FindC (interp , name , & argProcPtr , objProcPtr , cDataPtr );
339- }
340-
341331#endif /* TCL_MAJOR_VERSION */
342332
343333
0 commit comments