Closed
Bug 187180
Opened 23 years ago
Closed 22 years ago
VARARGS_ASSIGN should use va_copy() if available
Categories
(SeaMonkey :: Build Config, defect, P3)
Tracking
(Not tracked)
RESOLVED
FIXED
mozilla1.4alpha
People
(Reporter: mozbugs, Assigned: netscape)
Details
Attachments
(1 file)
5.55 KB,
patch
|
blizzard
:
review+
brendan
:
superreview+
|
Details | Diff | Splinter Review |
User-Agent: Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.3b) Gecko/20021228
Build Identifier: Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.3b) Gecko/20021228
These three source files:
M mozilla/js/src/jsprf.c
M mozilla/js/src/xpconnect/src/xpcconvert.cpp
M mozilla/xpcom/ds/nsTextFormatter.cpp
define the macro VARARGS_ASSIGN as:
#ifdef HAVE_VA_LIST_AS_ARRAY
#define VARARGS_ASSIGN(foo, bar) foo[0] = bar[0]
#else
#define VARARGS_ASSIGN(foo, bar) (foo) = (bar)
#endif
but this is not fully portable - building with forte 6.2 on Solaris, this
gives error:
"jsprf.c", line 615: warning: pointer to void or function used in arithmetic
"jsprf.c", line 615: warning: pointer to void or function used in arithmetic
"jsprf.c", line 615: operand cannot have void type: op "="
Why isn't va_copy() used if it is available? Changing the macro def to:
#define VARARGS_ASSIGN(foo, bar) va_copy(foo, bar)
allows the compile to proceed.
Reproducible: Always
Steps to Reproduce:
1.build using forte tools on Solaris
2.
3.
Actual Results:
"jsprf.c", line 615: warning: pointer to void or function used in arithmetic
"jsprf.c", line 615: warning: pointer to void or function used in arithmetic
"jsprf.c", line 615: operand cannot have void type: op "="
...etc..
Expected Results:
erm, built properly!
I suggest that the configure script does a check to see if va_copy is available,
and defines HAVE_VA_COPY if so, then change the macro def to:
#ifdef HAVE_VA_COPY
#define VARARGS_ASSIGN(foo, bar) va_copy(foo, bar)
#elif HAVE_VA_LIST_AS_ARRAY
#define VARARGS_ASSIGN(foo, bar) foo[0] = bar[0]
#else
#define VARARGS_ASSIGN(foo, bar) (foo) = (bar)
#endif
or something...
cc: Sun WorkShop 6 update 2 C 5.3 2001/05/15
Assignee | ||
Comment 1•23 years ago
|
||
I'm not sure about the portability issue but that construct works fine on our
Forte 6U2 tinderbox, nebiros. See
http://tinderbox.mozilla.org/showlog.cgi?log=SeaMonkey-Ports/1041040140.3505.gz&fulltext=1
cc: Sun Workshop 6 update 2 C 5.3 Patch 111679-05 2002/02/07
I would suggest applying the neccessary Forte patches.
Comment 2•23 years ago
|
||
1. "cc: Sun WorkShop 6 update 2 C 5.3 2001/05/15"
^^^^^^^^^^
is really old.
See http://access1.sun.com/sundev/fdp6u2-patches.html for matching patches.
2. Using |va_copy()| may be a good idea (being portable is always good :) ...
brendan ?
Status: UNCONFIRMED → NEW
Ever confirmed: true
Reporter | ||
Comment 3•23 years ago
|
||
OK, I upgraded to:
cc: Forte Developer 7 C 5.4 2002/03/09
and the problem has gone away. I still think va_copy() is a good idea, though...
Assignee | ||
Comment 4•23 years ago
|
||
Hrm. Too bad we can't use the glib macro for this. I'd hate to have to
copy-n-paste configure checks.
Assignee | ||
Comment 5•23 years ago
|
||
Assignee | ||
Updated•23 years ago
|
Attachment #111103 -
Flags: superreview?(brendan)
Attachment #111103 -
Flags: review?(shaver)
Comment 6•23 years ago
|
||
Comment on attachment 111103 [details] [diff] [review]
Add va_copy checks
Looks ok to me -- I guess the standalone JS build goo will need to be improved
for certain compilers, but I don't know who will do that work.
/be
Attachment #111103 -
Flags: superreview?(brendan) → superreview+
Assignee | ||
Updated•23 years ago
|
Priority: -- → P3
Target Milestone: --- → mozilla1.4alpha
Assignee | ||
Updated•22 years ago
|
Attachment #111103 -
Flags: review?(shaver) → review?(blizzard)
Comment 7•22 years ago
|
||
Comment on attachment 111103 [details] [diff] [review]
Add va_copy checks
r=blizzard
Attachment #111103 -
Flags: review?(blizzard) → review+
Assignee | ||
Comment 8•22 years ago
|
||
Patch has been checked in.
Status: NEW → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
Updated•21 years ago
|
Product: Browser → Seamonkey
You need to log in
before you can comment on or make changes to this bug.
Description
•