Closed
Bug 291020
Opened 21 years ago
Closed 21 years ago
[FIXr]XML mismatched tag error wrong when namespaces are involved
Categories
(Core :: XML, defect, P1)
Tracking
()
RESOLVED
FIXED
mozilla1.8beta2
People
(Reporter: bzbarsky, Assigned: bzbarsky)
References
(
URL
)
Details
Attachments
(1 file)
|
3.42 KB,
patch
|
peterv
:
review+
peterv
:
superreview+
asa
:
approval1.8b2+
|
Details | Diff | Splinter Review |
The document in the URL field should say that a "</foo>" is expected. Instead,
it says that a "</bar>" is expected, which is bogus.
This has been broken basically since the new expat landing. Patch coming up,
though I have to say that the implications of the comments in this code scare me
a little...
| Assignee | ||
Comment 1•21 years ago
|
||
Attachment #181185 -
Flags: superreview?(peterv)
Attachment #181185 -
Flags: review?(peterv)
| Assignee | ||
Updated•21 years ago
|
Priority: -- → P1
Summary: XML mismatched tag error wrong when namespaces are involved → [FIX]XML mismatched tag error wrong when namespaces are involved
Target Milestone: --- → mozilla1.8beta2
Comment 2•21 years ago
|
||
Comment on attachment 181185 [details] [diff] [review]
Patch
>Index: parser/expat/lib/xmlparse.c
>===================================================================
>RCS file: /home/bzbarsky/mozilla/cvs-mirror/mozilla/parser/expat/lib/xmlparse.c,v
>retrieving revision 1.29
>diff -u -p -d -2 -5 -r1.29 xmlparse.c
>--- parser/expat/lib/xmlparse.c 13 Jan 2005 14:51:20 -0000 1.29
>+++ parser/expat/lib/xmlparse.c 19 Apr 2005 19:55:55 -0000
>@@ -2331,54 +2331,74 @@ doContent(XML_Parser parser,
> if (endNamespaceDeclHandler)
> endNamespaceDeclHandler(handlerArg, b->prefix->name);
> bindings = bindings->nextTagBinding;
> b->nextTagBinding = freeBindingList;
> freeBindingList = b;
> b->prefix->binding = b->prevPrefixBinding;
> }
> }
> if (tagLevel == 0)
> return epilogProcessor(parser, next, end, nextPtr);
> break;
> case XML_TOK_END_TAG:
> if (tagLevel == startTagLevel)
> return XML_ERROR_ASYNC_ENTITY;
> else {
> int len;
> const char *rawName;
> TAG *tag = tagStack;
> tagStack = tag->parent;
> tag->parent = freeTagList;
> freeTagList = tag;
> rawName = s + enc->minBytesPerChar*2;
> len = XmlNameLength(enc, rawName);
> if (len != tag->rawNameLength
> || memcmp(tag->rawName, rawName, len) != 0) {
>- *eventPP = rawName;
> /* BEGIN MOZILLA CHANGE (Report opening tag of mismatched closing tag) */
>+ // This code is copied from the |if (endElementHandler)| block below
>+ const XML_Char *localPart;
>+ const XML_Char *prefix;
>+ XML_Char *uri;
>+ localPart = tag->name.localPart;
>+ if (ns && localPart) {
>+ /* localPart and prefix may have been overwritten in
>+ tag->name.str, since this points to the binding->uri
>+ buffer which gets re-used; so we have to add them again
>+ */
>+ uri = (XML_Char *)tag->name.str + tag->name.uriLen;
>+ /* don't need to check for space - already done in storeAtts() */
>+ while (*localPart) *uri++ = *localPart++;
>+ prefix = (XML_Char *)tag->name.prefix;
>+ if (ns_triplets && prefix) {
>+ *uri++ = namespaceSeparator;
>+ while (*prefix) *uri++ = *prefix++;
>+ }
>+ *uri = XML_T('\0');
>+ }
> mismatch = tag->name.str;
> /* END MOZILLA CHANGE */
>+ *eventPP = rawName;
> return XML_ERROR_TAG_MISMATCH;
> }
> --tagLevel;
> if (endElementHandler) {
> const XML_Char *localPart;
> const XML_Char *prefix;
> XML_Char *uri;
> localPart = tag->name.localPart;
> if (ns && localPart) {
> /* localPart and prefix may have been overwritten in
> tag->name.str, since this points to the binding->uri
> buffer which gets re-used; so we have to add them again
> */
> uri = (XML_Char *)tag->name.str + tag->name.uriLen;
> /* don't need to check for space - already done in storeAtts() */
> while (*localPart) *uri++ = *localPart++;
> prefix = (XML_Char *)tag->name.prefix;
> if (ns_triplets && prefix) {
> *uri++ = namespaceSeparator;
> while (*prefix) *uri++ = *prefix++;
> }
> *uri = XML_T('\0');
> }
> endElementHandler(handlerArg, tag->name.str);
> /* BEGIN MOZILLA CHANGE (Blocking parser) */
Attachment #181185 -
Flags: superreview?(peterv)
Attachment #181185 -
Flags: superreview+
Attachment #181185 -
Flags: review?(peterv)
Attachment #181185 -
Flags: review+
| Assignee | ||
Comment 3•21 years ago
|
||
Comment on attachment 181185 [details] [diff] [review]
Patch
Requesting 1.8b2 approval. This makes sure we actually write the data we want
to get to memory before we try to get it...
Attachment #181185 -
Flags: approval1.8b2?
| Assignee | ||
Updated•21 years ago
|
Summary: [FIX]XML mismatched tag error wrong when namespaces are involved → [FIXr]XML mismatched tag error wrong when namespaces are involved
Comment 4•21 years ago
|
||
Comment on attachment 181185 [details] [diff] [review]
Patch
a=asa
Attachment #181185 -
Flags: approval1.8b2? → approval1.8b2+
| Assignee | ||
Comment 5•21 years ago
|
||
Fixed (with the C++ comment changed to a C one).
Status: NEW → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•