[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [address@hidden: Re: Emacs 21.1 on HP-UX 10.20 behaves oddly]
From: |
Eli Zaretskii |
Subject: |
Re: [address@hidden: Re: Emacs 21.1 on HP-UX 10.20 behaves oddly] |
Date: |
Wed, 06 Feb 2002 21:14:34 +0200 |
> Date: Tue, 5 Feb 2002 14:05:43 +0200 (EET)
> From: Esa A E Peuha <esa.peuha@helsinki.fi>
>
> > Could you please tell what version of HP's cc is that?
>
> HP92453-01 A.10.32.22
>
> > Also, is this miscompilation something that's likely to happen in other
> > cases of a?b:c operator, or is get_charset_id somehow special?
>
> It apparently depends on the complexity of the condition clause; when I
> put the SYMBOLP part in a separate if statement in get_charset_id, it
> compiled properly, but I'm not sure what other clauses may be too
> complex.
Thanks. FYI, here's the change I committed to the Emacs CVS tree:
2002-02-06 Eli Zaretskii <eliz@is.elta.co.il>
* charset.c (get_charset_id): Use if-else instead of ?:.
Index: src/charset.c
===================================================================
RCS file: /cvs/emacs/src/charset.c,v
retrieving revision 1.118.4.1
diff -c -p -r1.118.4.1 charset.c
*** src/charset.c 6 Feb 2002 18:51:07 -0000 1.118.4.1
--- src/charset.c 6 Feb 2002 19:01:57 -0000
*************** get_charset_id (charset_symbol)
*** 599,609 ****
Lisp_Object val;
int charset;
! return ((SYMBOLP (charset_symbol)
! && (val = Fget (charset_symbol, Qcharset), VECTORP (val))
! && (charset = XINT (XVECTOR (val)->contents[CHARSET_ID_IDX]),
! CHARSET_VALID_P (charset)))
! ? charset : -1);
}
/* Return an identification number for a new private charset of
--- 599,613 ----
Lisp_Object val;
int charset;
! /* This originally used a ?: operator, but reportedly the HP-UX
! compiler version HP92453-01 A.10.32.22 miscompiles that. */
! if (SYMBOLP (charset_symbol)
! && VECTORP (val = Fget (charset_symbol, Qcharset))
! && CHARSET_VALID_P (charset =
! XINT (XVECTOR (val)->contents[CHARSET_ID_IDX])))
! return charset;
! else
! return -1;
}
/* Return an identification number for a new private charset of