dtksh: fix 32b/64b issues with XmTextGetString and XmTextFieldGetString
authorJon Trulson <jon@radscan.com>
Sun, 8 Mar 2020 21:05:48 +0000 (15:05 -0600)
committerJon Trulson <jon@radscan.com>
Mon, 9 Mar 2020 21:37:59 +0000 (15:37 -0600)
Some of these functions were returning pointers cast as integers,
which of course is bad on a 64b LP64 systems.

This code should probably just be refactored at some point.  There may
be other hidden issues, and all the casting just sucks.

cde/programs/dtksh/xmcmds.c

index e3f1e8bd58c359432f26c6b5dbd444ef3a5f03fc..ff6b6e81e1d48e4a92c3c985c737d56016a354db 100644 (file)
@@ -171,7 +171,7 @@ static int Text_Widget(
                         int argc,
                         char *argv[]) ;
 static int Text_VarAndWidget( 
-                        int (*func)(Widget w),
+                        long (*func)(Widget w),
                         Boolean varIsString,
                         int argc,
                         char *argv[]) ;
@@ -1301,7 +1301,7 @@ do_DtHelpReturnSelectedWidgetId(
        return(1);
    }
 
-   res = DtHelpReturnSelectedWidgetId(w->w, NULL, &retWidget);
+   res = DtHelpReturnSelectedWidgetId(w->w, 0, &retWidget);
    XSync(XtDisplay(w->w), False);
 
    f.addr = (caddr_t)&res;
@@ -3959,7 +3959,7 @@ do_XmTextRemove(
 
 static int
 Text_VarAndWidget(
-        int (*func)(Widget w),
+        long (*func)(Widget w),
         Boolean varIsString,
         int argc,
         char *argv[] )
@@ -4008,7 +4008,7 @@ do_XmTextGetTopCharacter(
         int argc,
         char *argv[] )
 {
-   return (Text_VarAndWidget((int (*)())XmTextGetTopCharacter, False, argc, 
+   return (Text_VarAndWidget((long (*)())XmTextGetTopCharacter, False, argc, 
            argv));
 }
 
@@ -4018,7 +4018,7 @@ do_XmTextGetBaseline(
         int argc,
         char *argv[] )
 {
-   return (Text_VarAndWidget(XmTextGetBaseline, False, argc, argv));
+    return (Text_VarAndWidget((long (*)())XmTextGetBaseline, False, argc, argv));
 }
 
 
@@ -4027,7 +4027,7 @@ do_XmTextGetInsertionPosition(
         int argc,
         char *argv[] )
 {
-   return (Text_VarAndWidget((int (*)())XmTextGetInsertionPosition, False, 
+   return (Text_VarAndWidget((long (*)())XmTextGetInsertionPosition, False, 
            argc, argv));
 }
 
@@ -4037,7 +4037,7 @@ do_XmTextGetLastPosition(
         int argc,
         char *argv[] )
 {
-   return (Text_VarAndWidget((int (*)())XmTextGetLastPosition, False, argc, 
+   return (Text_VarAndWidget((long (*)())XmTextGetLastPosition, False, argc, 
                              argv));
 }
 
@@ -4047,7 +4047,7 @@ do_XmTextGetMaxLength(
         int argc,
         char *argv[] )
 {
-   return (Text_VarAndWidget(XmTextGetMaxLength, False, argc, argv));
+   return (Text_VarAndWidget((long (*)())XmTextGetMaxLength, False, argc, argv));
 }
 
 
@@ -4056,7 +4056,7 @@ do_XmTextGetSelection(
         int argc,
         char *argv[] )
 {
-   return (Text_VarAndWidget((int (*)())XmTextGetSelection, True, argc, argv));
+   return (Text_VarAndWidget((long (*)())XmTextGetSelection, True, argc, argv));
 }
 
 
@@ -4065,7 +4065,7 @@ do_XmTextGetString(
         int argc,
         char *argv[] )
 {
-   return (Text_VarAndWidget((int (*)())XmTextGetString, True, argc, argv));
+   return (Text_VarAndWidget((long (*)())XmTextGetString, True, argc, argv));
 }