deadpixi / sam

An updated version of the sam text editor.
Other
430 stars 46 forks source link

Fix build on 32-bit architectures #124

Open flimberger opened 1 year ago

flimberger commented 1 year ago

Commit eab3ebc6 changed all occurrences of unsigned long to uint64_t, which does not work when it is used in callback functions whose signatures are defined with unsigned long by libXt. On 64-bit machines, unsigned long and uint64_t are the same type, but on 32-bit machines, long has only 32 bits. This makes the callback function pointer incompatible with the callback function parameter type.

The callback functions in question are the following (from X11/Intrinsic.h):

typedef Boolean (XtConvertSelectionProc)( Widget / widget /, Atom / selection /, Atom / target /, Atom / type_return /, XtPointer / value_return /, unsigned long / length_return /, int / format_return / ); typedef Boolean (XtConvertSelectionProc)( Widget / widget /, Atom / selection /, Atom / target /, Atom / type_return /, XtPointer / value_return /, unsigned long / length_return /, int / format_return / );

Both functions use pointers to unsigned long as output parameters for data length, so the functions implementing these callbacks have to use unsigned long, too.