dlls/include/list.h: remove_list() failed when removing first or last element

Markus Gömmel m.goemmel at compulab.de
Thu Nov 10 04:21:03 CST 2005


Hi,

> Sorry, but the patch is wrong. The Wine list implementation makes sure
> that next and prev are always valid pointers, such that the list is 
> circular. The only way to detect the end of the list is if entry->next == 
> start. If one of the entries is NULL then this generally indicates either 
> a use after free or some other kind of corruption of the memory used by 
> the list.
> If the memory is in the heap then HeapValidate may help find the 
> corruption.

If you say this, I will willingly believe it. I did some debugging searching 
for an exception which was caused by one of my applications, and at a 
certain point there are four calls of HeapAlloc(). Three of them worked 
great, but the forth failed cause elem->next was 0. So my idea was that its 
cause of it's the last entry. The other pointers looked really well. So do 
you think the is a heap corruption caused by my application or by some other 
part of Wine?

> One further note: on projects as big as Wine patching the ChangeLog is not 
> practical as it would result in a lot of conflicts. Therefore, Alexandre 
> Julliard automatically generates ChangeLog entries from CVS just before 
> each release.

Oh, I only did it cause its requested on 
http://www.winehq.com/site/sending_patches:

"When submitting patches, please:
Include a ChangeLog entry with your name, email address and a description of 
what your patch does."

Did I understand something wrong here???

Cheers

Markus Gömmel
m.goemmel at compulab.de 






More information about the wine-devel mailing list