Intro: Once I got wine to finally execute the native regedit, treeview was bringing it down.
Background: I discovered treeview uses DSA's and Dimi recently changed the max element number in DSA's to 0x7fff (SHRT_MAX). Note this value has the special meaning in DSA_InsertPtr functions of 'add new element to end of array'.
Problem: INT_MAX (0x7fffffff) was being passed from treeview to DSA_InsertPtr. This caused failure returns and eventually a seg fault.
Conclusion: This patch fixes the problem (according to the style of other calls to DSA_InsertPtr), and native regedit now works.
Questions for further thought: I wonder, should 0x7fff be used explicitly, or should SHRT_MAX be used in places like this instead?
Changelog: Treeview fix due to change in maximum DSA size.
-- Jeff S.
Index: dlls/comctl32/treeview.c =================================================================== RCS file: /home/wine/wine/dlls/comctl32/treeview.c,v retrieving revision 1.103 diff -u -r1.103 treeview.c --- dlls/comctl32/treeview.c 6 Sep 2002 19:41:18 -0000 1.103 +++ dlls/comctl32/treeview.c 23 Oct 2002 04:12:53 -0000 @@ -949,7 +949,7 @@ if (!newItem) return NULL;
- if (DPA_InsertPtr(infoPtr->items, INT_MAX, newItem) == -1) + if (DPA_InsertPtr(infoPtr->items, 0x7fff, newItem) == -1) { COMCTL32_Free(newItem); return NULL; @@ -2885,7 +2885,7 @@
for (child = item->firstChild; child != NULL; child = child->nextSibling) { - if (DPA_InsertPtr(list, INT_MAX, child) == -1) + if (DPA_InsertPtr(list, 0x7fff, child) == -1) { DPA_Destroy(list); return NULL;
_________________________________________________________________ Get faster connections -- switch to MSN Internet Access! http://resourcecenter.msn.com/access/plans/default.asp
On October 23, 2002 12:44 am, Jeff Smith wrote:
I discovered treeview uses DSA's and Dimi recently changed the max element number in DSA's to 0x7fff (SHRT_MAX). Note this value has the special meaning in DSA_InsertPtr functions of 'add new element to end of array'.
This was my initial reaction to this thing, as well. But I think my fix (sent earlier with Subject DPA_InsertPtr) is better. Please try it out -- it should fix your problem.
BTW, I've also audited all other uses of DPA_InsertPtr, and they are fine. We should be back to normal now (well, after my patch is applied, of course).