@@ -51,18 +51,22 @@ inserts a node in the tree
51
51
HTREEITEM JSONDialog::insertToTree (HWND hWndDlg,HTREEITEM parent,char *text)
52
52
{
53
53
TV_INSERTSTRUCT tvinsert;
54
-
54
+ HTREEITEM item = NULL ;
55
55
tvinsert.hParent =parent;
56
56
tvinsert.hInsertAfter =TVI_LAST;
57
57
tvinsert.item .mask =TVIF_TEXT;
58
58
59
59
int len = strlen (text) + 1 ;
60
60
wchar_t *w_msg = new wchar_t [len];
61
- memset (w_msg, 0 , len);
62
- MultiByteToWideChar (CP_UTF8, NULL , text, -1 , w_msg, len);
61
+ if (w_msg)
62
+ {
63
+ memset (w_msg, 0 , len);
64
+ MultiByteToWideChar (CP_UTF8, NULL , text, -1 , w_msg, len);
63
65
64
- tvinsert.item .pszText =w_msg;
65
- HTREEITEM item=(HTREEITEM)SendDlgItemMessage (hWndDlg,IDC_TREE1,TVM_INSERTITEM,0 ,(LPARAM)&tvinsert);
66
+ tvinsert.item .pszText = w_msg;
67
+ item = (HTREEITEM)SendDlgItemMessage (hWndDlg, IDC_TREE1, TVM_INSERTITEM, 0 , (LPARAM)&tvinsert);
68
+ delete[] w_msg; // fix memory leak
69
+ }
66
70
67
71
return item;
68
72
}
@@ -92,21 +96,30 @@ void JSONDialog::populateTree (HWND hWndDlg, HTREEITEM tree_root, json_t * json_
92
96
{
93
97
int len=strlen (json_root->parent ->text )+3 +strlen (json_root->text )+1 ;
94
98
char *txt=new char [len];
95
- memset (txt, 0 , len);
96
- char *unesc_text=json_unescape (json_root->text );
97
- char *unesc_parent_text=json_unescape (json_root->parent ->text );
98
- sprintf (txt," %s : %s" ,unesc_parent_text,unesc_text);
99
- free (unesc_text);
100
- free (unesc_parent_text);
101
-
102
- len = strlen (txt) + 1 ;
103
- wchar_t *w_txt = new wchar_t [len];
104
- memset (w_txt, 0 , len);
105
- MultiByteToWideChar (CP_UTF8, NULL , txt, -1 , w_txt, len);
106
-
107
- t.pszText =w_txt;
108
- t.mask =TVIF_TEXT;
109
- ::SendDlgItemMessage (hWndDlg,IDC_TREE1,TVM_SETITEM,0 ,(LPARAM)&t);
99
+ if (txt)
100
+ {
101
+ memset (txt, 0 , len);
102
+ char *unesc_text = json_unescape (json_root->text );
103
+ char *unesc_parent_text = json_unescape (json_root->parent ->text );
104
+ sprintf (txt, " %s : %s" , unesc_parent_text, unesc_text);
105
+ free (unesc_text);
106
+ free (unesc_parent_text);
107
+
108
+ len = strlen (txt) + 1 ;
109
+ wchar_t *w_txt = new wchar_t [len];
110
+ if (w_txt)
111
+ {
112
+ memset (w_txt, 0 , len);
113
+ MultiByteToWideChar (CP_UTF8, NULL , txt, -1 , w_txt, len);
114
+
115
+ t.pszText = w_txt;
116
+ t.mask = TVIF_TEXT;
117
+ ::SendDlgItemMessage (hWndDlg, IDC_TREE1, TVM_SETITEM, 0 , (LPARAM)&t);
118
+ delete[] w_txt; // fix memory leak
119
+ }
120
+
121
+ delete[] txt; // fix memory leak
122
+ }
110
123
}
111
124
}else
112
125
{
@@ -129,19 +142,29 @@ void JSONDialog::populateTree (HWND hWndDlg, HTREEITEM tree_root, json_t * json_
129
142
{
130
143
int len=strlen (json_root->parent ->text )+3 +strlen (json_root->text )+1 ;
131
144
char *txt=new char [len];
132
- memset (txt, 0 , len);
133
- char *unesc_parent_text=json_unescape (json_root->parent ->text );
134
- sprintf (txt," %s : %s" ,unesc_parent_text,json_root->text );
135
- free (unesc_parent_text);
136
-
137
- len = strlen (txt) + 1 ;
138
- wchar_t *w_txt = new wchar_t [len];
139
- memset (w_txt, 0 , len);
140
- MultiByteToWideChar (CP_UTF8, NULL , txt, -1 , w_txt, len);
141
-
142
- t.pszText =w_txt;
143
- t.mask =TVIF_TEXT;
144
- ::SendDlgItemMessage (hWndDlg,IDC_TREE1,TVM_SETITEM,0 ,(LPARAM)&t);
145
+ if (txt)
146
+ {
147
+ memset (txt, 0 , len);
148
+ char *unesc_parent_text = json_unescape (json_root->parent ->text );
149
+ sprintf (txt, " %s : %s" , unesc_parent_text, json_root->text );
150
+ free (unesc_parent_text);
151
+
152
+ len = strlen (txt) + 1 ;
153
+ wchar_t *w_txt = new wchar_t [len];
154
+ if (w_txt)
155
+ {
156
+ memset (w_txt, 0 , len);
157
+ MultiByteToWideChar (CP_UTF8, NULL , txt, -1 , w_txt, len);
158
+
159
+ t.pszText = w_txt;
160
+ t.mask = TVIF_TEXT;
161
+ ::SendDlgItemMessage (hWndDlg, IDC_TREE1, TVM_SETITEM, 0 , (LPARAM)&t);
162
+
163
+ delete[] w_txt;// fix memory leak
164
+ }
165
+
166
+ delete[] txt; // fix memory leak
167
+ }
145
168
}
146
169
}else
147
170
{
@@ -168,21 +191,30 @@ void JSONDialog::populateTree (HWND hWndDlg, HTREEITEM tree_root, json_t * json_
168
191
{
169
192
int len=strlen (json_root->parent ->text )+3 +strlen (" True" )+1 ;
170
193
char *txt=new char [len];
171
- memset (txt, 0 , len);
172
- char *unesc_text=json_unescape (" True" );
173
- char *unesc_parent_text=json_unescape (json_root->parent ->text );
174
- sprintf (txt," %s : %s" ,unesc_parent_text,unesc_text);
175
- free (unesc_text);
176
- free (unesc_parent_text);
177
-
178
- len = strlen (txt) + 1 ;
179
- wchar_t *w_txt = new wchar_t [len];
180
- memset (w_txt, 0 , len);
181
- MultiByteToWideChar (CP_UTF8, NULL , txt, -1 , w_txt, len);
182
-
183
- t.pszText =w_txt;
184
- t.mask =TVIF_TEXT;
185
- ::SendDlgItemMessage (hWndDlg,IDC_TREE1,TVM_SETITEM,0 ,(LPARAM)&t);
194
+ if (txt)
195
+ {
196
+ memset (txt, 0 , len);
197
+ char *unesc_text = json_unescape (" True" );
198
+ char *unesc_parent_text = json_unescape (json_root->parent ->text );
199
+ sprintf (txt, " %s : %s" , unesc_parent_text, unesc_text);
200
+ free (unesc_text);
201
+ free (unesc_parent_text);
202
+
203
+ len = strlen (txt) + 1 ;
204
+ wchar_t *w_txt = new wchar_t [len];
205
+
206
+ if (w_txt)
207
+ {
208
+ memset (w_txt, 0 , len);
209
+ MultiByteToWideChar (CP_UTF8, NULL , txt, -1 , w_txt, len);
210
+
211
+ t.pszText = w_txt;
212
+ t.mask = TVIF_TEXT;
213
+ ::SendDlgItemMessage (hWndDlg, IDC_TREE1, TVM_SETITEM, 0 , (LPARAM)&t);
214
+ delete[] w_txt;// fix memory leak
215
+ }
216
+ delete[] txt; // fix memory leak
217
+ }
186
218
}
187
219
}else
188
220
{
@@ -205,21 +237,29 @@ void JSONDialog::populateTree (HWND hWndDlg, HTREEITEM tree_root, json_t * json_
205
237
{
206
238
int len=strlen (json_root->parent ->text )+3 +strlen (" False" )+1 ;
207
239
char *txt=new char [len];
208
- memset (txt, 0 , len);
209
- char *unesc_text=json_unescape (" False" );
210
- char *unesc_parent_text=json_unescape (json_root->parent ->text );
211
- sprintf (txt," %s : %s" ,unesc_parent_text,unesc_text);
212
- free (unesc_text);
213
- free (unesc_parent_text);
214
-
215
- len = strlen (txt) + 1 ;
216
- wchar_t *w_txt = new wchar_t [len];
217
- memset (w_txt, 0 , len);
218
- MultiByteToWideChar (CP_UTF8, NULL , txt, -1 , w_txt, len);
219
-
220
- t.pszText =w_txt;
221
- t.mask =TVIF_TEXT;
222
- ::SendDlgItemMessage (hWndDlg,IDC_TREE1,TVM_SETITEM,0 ,(LPARAM)&t);
240
+ if (txt)
241
+ {
242
+ memset (txt, 0 , len);
243
+ char *unesc_text = json_unescape (" False" );
244
+ char *unesc_parent_text = json_unescape (json_root->parent ->text );
245
+ sprintf (txt, " %s : %s" , unesc_parent_text, unesc_text);
246
+ free (unesc_text);
247
+ free (unesc_parent_text);
248
+
249
+ len = strlen (txt) + 1 ;
250
+ wchar_t *w_txt = new wchar_t [len];
251
+ if (w_txt)
252
+ {
253
+ memset (w_txt, 0 , len);
254
+ MultiByteToWideChar (CP_UTF8, NULL , txt, -1 , w_txt, len);
255
+
256
+ t.pszText = w_txt;
257
+ t.mask = TVIF_TEXT;
258
+ ::SendDlgItemMessage (hWndDlg, IDC_TREE1, TVM_SETITEM, 0 , (LPARAM)&t);
259
+ delete[] w_txt; // fix memory leak
260
+ }
261
+ delete[] txt; // fix memory leak
262
+ }
223
263
}
224
264
}else
225
265
{
0 commit comments