Module: wine Branch: master Commit: b2aae66f1ab495480861f0e0b559739654d8f171 URL: http://source.winehq.org/git/wine.git/?a=commit;h=b2aae66f1ab495480861f0e0b5...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Apr 25 15:37:36 2007 +0200
hhctrl.ocx: Don't insert content item that could not be merged.
---
dlls/hhctrl.ocx/content.c | 44 ++++++++++++++++++++++++++------------------ 1 files changed, 26 insertions(+), 18 deletions(-)
diff --git a/dlls/hhctrl.ocx/content.c b/dlls/hhctrl.ocx/content.c index c572baf..a34c853 100644 --- a/dlls/hhctrl.ocx/content.c +++ b/dlls/hhctrl.ocx/content.c @@ -32,6 +32,24 @@ typedef enum { INSERT_CHILD } insert_type_t;
+static void free_content_item(ContentItem *item) +{ + ContentItem *next; + + while(item) { + next = item->next; + + free_content_item(item->child); + + hhctrl_free(item->name); + hhctrl_free(item->local); + hhctrl_free(item->merge.chm_file); + hhctrl_free(item->merge.chm_index); + + item = next; + } +} + typedef struct { char *buf; int size; @@ -207,6 +225,9 @@ static ContentItem *insert_item(ContentItem *item, ContentItem *new_item, insert if(!item) return new_item;
+ if(!new_item) + return item; + switch(insert_type) { case INSERT_NEXT: item->next = new_item; @@ -265,6 +286,11 @@ static ContentItem *parse_sitemap_object(HHInfo *info, stream_t *stream, Content }else { WARN("Could not get %s::%s stream\n", debugstr_w(item->merge.chm_file), debugstr_w(item->merge.chm_file)); + + if(!item->name) { + free_content_item(item); + item = NULL; + } }
} @@ -411,24 +437,6 @@ void InitContent(HHInfo *info) fill_content_tree(info->tabs[TAB_CONTENTS].hwnd, NULL, info->content); }
-static void free_content_item(ContentItem *item) -{ - ContentItem *next; - - while(item) { - next = item->next; - - free_content_item(item->child); - - hhctrl_free(item->name); - hhctrl_free(item->local); - hhctrl_free(item->merge.chm_file); - hhctrl_free(item->merge.chm_index); - - item = next; - } -} - void ReleaseContent(HHInfo *info) { free_content_item(info->content);