@@ -1135,7 +1135,7 @@ static void pairs_to_args(Arg args[], Cardinal *nr_args_return, mlval list)
1135
1135
1136
1136
1137
1137
1138
- static void args_to_pairs (Arg args [], mlval list )
1138
+ static void xt_args_to_pairs (Arg args [], mlval list )
1139
1139
{
1140
1140
Cardinal nr_args = 0 ;
1141
1141
mlval ref = MLUNIT ;
@@ -1152,24 +1152,24 @@ static void args_to_pairs(Arg args[], mlval list)
1152
1152
switch (FIELD (argument , 0 )) {
1153
1153
case mlw_x_arg_bool :
1154
1154
/* Need to cast the pointer before dereferencing */
1155
- mlw_ref_update (ref , MLBOOL (* (Boolean * )(& ( args [nr_args ].value ) )));
1155
+ mlw_ref_update (ref , MLBOOL (* (Boolean * )(args [nr_args ].value )));
1156
1156
break ;
1157
1157
1158
1158
case mlw_x_arg_boxed :
1159
1159
{
1160
- mlval string = box ((unsigned long int ) args [nr_args ].value );
1160
+ mlval string = box (* (unsigned long int * )( args [nr_args ].value ) );
1161
1161
mlw_ref_update (ref , string );
1162
1162
}
1163
1163
break ;
1164
1164
1165
1165
case mlw_x_arg_int :
1166
1166
/* Need to cast the pointer before dereferencing */
1167
- mlw_ref_update (ref , MLINT (* (int * )(& ( args [nr_args ].value ) )));
1167
+ mlw_ref_update (ref , MLINT (* (int * )(args [nr_args ].value )));
1168
1168
break ;
1169
1169
1170
1170
case mlw_x_arg_short :
1171
1171
/* Need to cast the pointer before dereferencing */
1172
- mlw_ref_update (ref , MLINT (* (short * )(& ( args [nr_args ].value ) )));
1172
+ mlw_ref_update (ref , MLINT (* (short * )(args [nr_args ].value )));
1173
1173
break ;
1174
1174
1175
1175
case mlw_x_arg_string :
@@ -1180,11 +1180,11 @@ static void args_to_pairs(Arg args[], mlval list)
1180
1180
break ;
1181
1181
1182
1182
case mlw_x_arg_unboxed :
1183
- mlw_ref_update (ref , (mlval )args [nr_args ].value );
1183
+ mlw_ref_update (ref , (mlval )* (( XtArgVal * ) args [nr_args ].value ) );
1184
1184
break ;
1185
1185
1186
1186
default :
1187
- error ("args_to_pairs : Illegal Argument constructor for resource `%s': 0x%X" ,
1187
+ error ("xt_args_to_pairs : Illegal Argument constructor for resource `%s': 0x%X" ,
1188
1188
CSTRING (FIELD (head , 0 )), FIELD (argument , 0 ));
1189
1189
}
1190
1190
@@ -1885,24 +1885,16 @@ static mlval widget_values_set(mlval argument)
1885
1885
static mlval widget_values_get (mlval argument )
1886
1886
{
1887
1887
Arg args [MAX_NR_ARGS ];
1888
+ XtArgVal vals [MAX_NR_ARGS ] = {0 };
1888
1889
Cardinal nr_args , i ;
1889
1890
mlval list = FIELD (argument , 1 );
1890
1891
1891
1892
pairs_to_args (args , & nr_args , list );
1892
1893
for (i = 0 ; i < nr_args ; ++ i ) {
1893
- XtArgVal tmp = (XtArgVal )XtMalloc (sizeof (XtArgVal ));
1894
- if (tmp == 0 )
1895
- error ("widget_values_get: malloc failed" , 0 , 0 );
1896
- else
1897
- args [i ].value = tmp ;
1894
+ args [i ].value = (XtArgVal )& vals [i ];
1898
1895
}
1899
1896
XtGetValues ((Widget )FIELD (argument , 0 ), args , nr_args );
1900
- for (i = 0 ; i < nr_args ; ++ i ) {
1901
- XtArgVal * tmp = (XtArgVal * )args [i ].value ;
1902
- args [i ].value = * tmp ;
1903
- XtFree ((char * )tmp );
1904
- }
1905
- args_to_pairs (args , list );
1897
+ xt_args_to_pairs (args , list );
1906
1898
1907
1899
return (MLUNIT );
1908
1900
}
0 commit comments