Michael,
I'm aware of this problem (though I didn't know about the exact numbers). There was a short discussion on wine-devel about it:
http://www.winehq.org/pipermail/wine-devel/2005-August/039452.html
I actually read the discussion but didn't make the connection when looking at this problem.
The problem is, that we currently can't read icons via PrivateExtractIcons from wine's ELF dlls. I would guess that for ReactOS, you don't need the hack'ish icon cache pre-initialization at all, since you do have real PE dlls?
Yes, you're right on both counts, we do have real PE dlls and it turns out we don't actually need the pre-init. Thanks for solving my problem :-)
As was pointed out by Alexandre, the correct fix for wine would probably be to try to load the given dll via LoadModule, if all other methods fail in PrivateExtractIcon. Unfortunetaly, I don't have time to work on this at the moment, and probably won't have for the next months.
To fix the memory waste, maybe Wine could stop substituting icon with index 0 for non-existent icons in SIC_Initialize? PidlToSicIndex() will try to find the icon and when it doesn't exist will return index 0 anyway. This doesn't solve the general problem of loading resources from Wine dlls ofcourse.
Gé van Geldorp.