Your recollection is right, but Daniel checked in a change last April that makes xmlReallocLoc() return NULL if passed NULL. See http://cvs.gnome.org/bonsai/cvsview2.cgi?diff_mode=context&whitespace_mode=s how&file=xmlmemory.c&branch=&root=/cvs/gnome&subdir=gnome-xml&command=DIFF_F RAMESET&rev1=1.39&rev2=1.40. CCing the libxml list so Daniel can comment.
> -----Original Message----- > From: Aleksey Sanin [mailto:[EMAIL PROTECTED] > Sent: Thursday, January 22, 2004 1:29 PM > To: Rob Richards > Cc: [EMAIL PROTECTED] > Subject: Re: [xmlsec] xmlSecPtrListEnsureSize failing > > > xmlRealloc() is realloc() eququivalent. And as far as I can remember, > ANSI C realloc() MUST accept NULL pointer as first argument. > > Aleksey > > > Rob Richards wrote on 1/22/2004, 10:00 AM: > > > Sorry but I don't see this code. What I have is : > > > > > > if(newSize < gInitialSize) { > > > newSize = gInitialSize; > > > } > > > > > > newData = (xmlSecPtr*)xmlRealloc(list->data, > sizeof(xmlSecPtr) * > > newSize); > > > > That's the origional source. I modified it to the following > which fixed the > > problem for me: > > > > if(newSize < gInitialSize) { > > newSize = gInitialSize; > > } > > > > if (list->data) { > > newData = (xmlSecPtr*)xmlRealloc(list->data, > sizeof(xmlSecPtr) * > > newSize); > > } else { > > newData = (xmlSecPtr*)xmlMalloc(sizeof(xmlSecPtr) * newSize); > > } > > > > under the origional source, list->data when entering > xmlRealloc was NULL, so > > the xmlRealloc call would fail as it explcitly tests for > NULL before doing > > anything. > > > > > > Am I missing something that wouldnt require the above > as I see the call > > to > > > > xmlFree(list->data) in xmlSecPtrListEmpty, but dont see > where list->data > > is > > > > actually alloc'd. > > > > > > Few lines bellow: > > > > > > list->data = newData; > > > list->max = newSize; > > > > newData was NULL when returned from xmlRealloc, list->data > is just set to > > NULL (which is what it currently is anyways). > > After this it falls into the xmlSecError handler. > list->data doesnt ever > > seem to have been initialized anywhere and the origional > source is expecting > > it to not be pointing at a zero'd out memory block. > > > > Rob > _______________________________________________ > xmlsec mailing list > [EMAIL PROTECTED] > http://www.aleksey.com/mailman/listinfo/xmlsec > _______________________________________________ xmlsec mailing list [EMAIL PROTECTED] http://www.aleksey.com/mailman/listinfo/xmlsec
