Closed Bug 553997 Opened 14 years ago Closed 14 years ago

JS_ISSPACE now uses js_A, js_X and js_Y which are not exported

Categories

(Core :: JavaScript Engine, defect)

1.9.2 Branch
x86
Linux
defect
Not set
normal

Tracking

()

RESOLVED WONTFIX

People

(Reporter: glandium, Unassigned)

Details

Attachments

(1 file)

Attached patch PatchSplinter Review
gxine uses JS_ISSPACE, and since 1.9.2, JS_ISSPACE uses JS_CCODE, which uses js_A, js_X and js_Y. These are not exported from the library.

Also note that while gxine doesn't use JS_ISWORD, this macro has the same problem with js_alnum, which is not exported either. While the patch I'm attaching doesn't export js_alnum, maybe it should be, too.
Attachment #433900 - Attachment is patch: true
Attachment #433900 - Attachment mime type: application/octet-stream → text/plain
Attachment #433900 - Flags: review?(brendan)
gxine shouldn't be using JS_ISSPACE, it's not part of the public API. why are they including jsstr.h at all?
Short answer: because all headers from js/src are installed as system headers.
Hmm, I don't think we should export and maintain internal API because of packaging infelicities.  The gxine guys should find something else to use for this functionality.  Thanks for the report, though!
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → WONTFIX
Comment on attachment 433900 [details] [diff] [review]
Patch

r-: don't want to add to the export table or in general support embedding use of internal headers.
Attachment #433900 - Flags: review?(brendan) → review-
(In reply to comment #4)
> (From update of attachment 433900 [details] [diff] [review])
> r-: don't want to add to the export table or in general support embedding use
> of internal headers.

Where is the distinction made between internal and public headers ?
Not clearly enough, which is our fault.  The published header set is "js*api.h and everything they include", but embeddings shouldn't directly include any file that isn't js*api.h (that is, they shouldn't include jspubtd.h or such directly).
(In reply to comment #6)
> Not clearly enough, which is our fault.  The published header set is "js*api.h
> and everything they include", but embeddings shouldn't directly include any
> file that isn't js*api.h (that is, they shouldn't include jspubtd.h or such
> directly).

Shouldn't the install rules in js/src be modified accordingly, then ? (In which case I'll file another bug)
To be blunt, I didn't know anyone used the install rules!  Please do file (or, I fear, find already filed) a bug.
Before I file a new bug, could you tell me if you'd expect jsprvtd.h and jsopcode.h to be public ? That doesn't sound right, yet they are included from jsdbgapi.h and jsxdrapi.h.
Also note that the following headers contain JS_PUBLIC_API symbols, while they are not included from any *api.h file:
jsarena.h
jsbit.h
jsdhash.h
jsfile.h
jshash.h
jsprf.h
How about I answer comments 9 and 10 in your new bug? :)
Filed bug 554088
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: