[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: SIAG on an Alpha machine
On Mon, 5 Oct 1998, Brian E.W. Wood wrote:
> On 05-Oct-98 Ulric Eriksson wrote:
> >
> > 1. The conversion between XtPointer and int is something many X programs
> > do and IIRC the definition of XtPointer is supposed to allow the
> > conversion.
>
> I would think that going from a 32-bit integer to a 64-bit pointer would work
> OK but I can see trouble going the other way.
The conversion is from an integer to an XtPointer and back. Here is the
relevant quote from "X Toolkit Intrinsics - C Language Interface":
1.5. Implementation-specific Types
...
XtPointer
A datum large enough to contain the largest of a char*, int*, function
pointer, structure pointer, or long value. A pointer to any type or
function, or a long value may be converted to an XtPointer and back again
and the result will compare equal to the original value. In ANSI C
environments it is expected that XtPointer will be defined as void*.
...
IOW, if X on the Alpha doesn't allow the conversion, then X on the Alpha
is broken. The C compiler is allowed to warn about it though (a C compiler
is allowed to warn about anything, including correct code).
But I seriously doubt that X on the Alpha is broken. In any case, it is
much easier to fix if the problem is with Siag.
Additional clues:
- Does tsiag work? In that case, the problem can be narrowed down to the
X specific code.
- There is much widget code where resources are declared as int, but set
through calls to XtVaSetValues(w, XtNtableMaxRow, blah, ...) where blah is
in reality a long. There is no type checking done by XtVaSetValues,
because it is a variadic function. I would expect this to cause trouble;
in fact I wouldn't expect it to work at all, no matter how slowly the
mouse is moved.
Ulric