[ expat-Bugs-808331 ] Faulty code generation in function "lookup"

"SourceForge.net" <[email protected]>
Newsgroups gmane.text.xml.expat.bugs
Message-ID <[email protected]>
Bugs item #808331, was opened at 2003-09-17 22:35
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=110127&aid=808331&group_id=10127

Category: None
Group: Platform Specific
Status: Open
Resolution: None
Priority: 5
Submitted By: Nobody/Anonymous (nobody)
Assigned to: Nobody/Anonymous (nobody)
Summary: Faulty code generation in function "lookup"

Initial Comment:
The function "lookup" in source "xmlparse.c" generates 

faulty code when built for a PocketPC2002 device in 

eMbedded Visual C++ v3.0.  Note that this only occurs 

for a release build, and not for a debug build.



Specifically this block of code at line 5306:



for (i = h & (table->size - 1);

   table->v[i];

   i == 0 ? i = table->size - 1 : --i) {

   if (keyeq(name, table->v[i]->name))

      return table->v[i];

    }



The return statement is generated as a branch to the 

return statement at the end of the function.  The code 

generation fault is in the failure to shift the index i to 

account for the size of the elements of v. 



The alternative is to declare a local variable of type 

NAMED ** to be assigned in the condition clause of the 

for loop and return that instead.



NAMED **n;

for (i = h & (table->size - 1);

   (n = table->v[i]) != NULL;

    i == 0 ? i = table->size - 1 : --i) {

      if (keyeq(name, table->v[i]->name))

        return n;

    }



email address: [email protected]

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=110127&aid=808331&group_id=10127
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.