Merge lp:~stewart/drizzle/warning-stack-frame-32k into lp:drizzle/7.0
- warning-stack-frame-32k
- Merge into 7.0
Proposed by
Stewart Smith
Status: | Merged | ||||
---|---|---|---|---|---|
Merge reported by: | Lee Bieber | ||||
Merged at revision: | not available | ||||
Proposed branch: | lp:~stewart/drizzle/warning-stack-frame-32k | ||||
Merge into: | lp:drizzle/7.0 | ||||
Diff against target: |
1095 lines (+194/-130) 20 files modified
client/drizzle.cc (+5/-4) client/drizzleslap.cc (+5/-2) examples/pipe_query.c (+15/-8) examples/proxy.c (+22/-18) examples/server.c (+14/-11) examples/simple.c (+12/-11) examples/simple_multi.c (+11/-3) examples/sqlite_server.c (+28/-24) m4/pandora_warnings.m4 (+1/-1) plugin/archive/archive_performance.cc (+5/-2) plugin/archive/archive_reader.cc (+7/-3) plugin/archive/archive_test.cc (+9/-2) plugin/archive/concurrency_test.cc (+5/-2) plugin/archive/ha_archive.cc (+27/-26) plugin/innobase/row/row0merge.c (+6/-2) plugin/logging_gearman/logging_gearman.cc (+4/-3) plugin/myisam/ha_myisam.cc (+3/-1) plugin/myisam/mi_open.cc (+6/-2) plugin/pbms/src/backup_ms.cc (+5/-3) plugin/pbms/src/trans_log_ms.cc (+4/-2) |
||||
To merge this branch: | bzr merge lp:~stewart/drizzle/warning-stack-frame-32k | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Drizzle Developers | Pending | ||
Review via email: mp+40325@code.launchpad.net |
Commit message
Description of the change
Fixes up all methods with stack usage > 32k to use less than 32kb of stack.
Before this can be merged, Monty needs to fix up a check in pandora for the GCC warning, as the GCC version on hades is old enough not to have the wonderful option.
http://
To post a comment you must log in.
Revision history for this message
Andrew Hutchings (linuxjedi) wrote : | # |
Revision history for this message
Monty Taylor (mordred) wrote : | # |
I included this in my branch: lp:~mordred/drizzle/warning-stack-frame
Revision history for this message
Monty Taylor (mordred) wrote : | # |
And yes - we should not be using auto_ptr, but instead should be using boost::scoped_ptr or boost::shared_ptr.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'client/drizzle.cc' |
2 | --- client/drizzle.cc 2010-10-30 01:19:00 +0000 |
3 | +++ client/drizzle.cc 2010-11-08 13:25:00 +0000 |
4 | @@ -61,6 +61,7 @@ |
5 | #include <cassert> |
6 | #include <stdarg.h> |
7 | #include <math.h> |
8 | +#include <memory> |
9 | #include "client/linebuffer.h" |
10 | #include <signal.h> |
11 | #include <sys/ioctl.h> |
12 | @@ -1825,7 +1826,7 @@ |
13 | void handle_sigint(int sig) |
14 | { |
15 | char kill_buffer[40]; |
16 | - drizzle_con_st kill_drizzle; |
17 | + auto_ptr<drizzle_con_st> kill_drizzle(new drizzle_con_st); |
18 | drizzle_result_st res; |
19 | drizzle_return_t ret; |
20 | |
21 | @@ -1834,7 +1835,7 @@ |
22 | goto err; |
23 | } |
24 | |
25 | - if (drizzle_con_add_tcp(&drizzle, &kill_drizzle, current_host.c_str(), |
26 | + if (drizzle_con_add_tcp(&drizzle, kill_drizzle.get(), current_host.c_str(), |
27 | opt_drizzle_port, current_user.c_str(), opt_password.c_str(), NULL, |
28 | use_drizzle_protocol ? DRIZZLE_CON_EXPERIMENTAL : DRIZZLE_CON_MYSQL) == NULL) |
29 | { |
30 | @@ -1845,10 +1846,10 @@ |
31 | sprintf(kill_buffer, "KILL /*!50000 QUERY */ %u", |
32 | drizzle_con_thread_id(&con)); |
33 | |
34 | - if (drizzle_query_str(&kill_drizzle, &res, kill_buffer, &ret) != NULL) |
35 | + if (drizzle_query_str(kill_drizzle.get(), &res, kill_buffer, &ret) != NULL) |
36 | drizzle_result_free(&res); |
37 | |
38 | - drizzle_con_free(&kill_drizzle); |
39 | + drizzle_con_free(kill_drizzle.get()); |
40 | tee_fprintf(stdout, _("Query aborted by Ctrl+C\n")); |
41 | |
42 | interrupted_query= 1; |
43 | |
44 | === modified file 'client/drizzleslap.cc' |
45 | --- client/drizzleslap.cc 2010-11-04 22:54:06 +0000 |
46 | +++ client/drizzleslap.cc 2010-11-08 13:25:00 +0000 |
47 | @@ -95,6 +95,7 @@ |
48 | #include <iostream> |
49 | #include <fstream> |
50 | #include <drizzled/configmake.h> |
51 | +#include <memory> |
52 | |
53 | /* Added this for string translation. */ |
54 | #include <drizzled/gettext.h> |
55 | @@ -273,7 +274,8 @@ |
56 | uint64_t counter= 0, queries; |
57 | uint64_t detach_counter; |
58 | uint32_t commit_counter; |
59 | - drizzle_con_st con; |
60 | + auto_ptr<drizzle_con_st> con_ap(new drizzle_con_st); |
61 | + drizzle_con_st &con= *con_ap.get(); |
62 | drizzle_result_st result; |
63 | drizzle_row_t row; |
64 | Statement *ptr; |
65 | @@ -536,7 +538,8 @@ |
66 | std::string user_config_dir((getenv("XDG_CONFIG_HOME")? getenv("XDG_CONFIG_HOME"):"~/.config")); |
67 | |
68 | uint64_t temp_drizzle_port= 0; |
69 | - drizzle_con_st con; |
70 | + auto_ptr<drizzle_con_st> con_ap(new drizzle_con_st); |
71 | + drizzle_con_st &con= *con_ap.get(); |
72 | OptionString *eptr; |
73 | |
74 | // Disable allow_guessing |
75 | |
76 | === modified file 'examples/pipe_query.c' |
77 | --- examples/pipe_query.c 2010-09-28 07:50:05 +0000 |
78 | +++ examples/pipe_query.c 2010-11-08 13:25:00 +0000 |
79 | @@ -32,7 +32,7 @@ |
80 | size_t buffer_total= 0; |
81 | ssize_t read_size= 0; |
82 | drizzle_st drizzle; |
83 | - drizzle_con_st con; |
84 | + drizzle_con_st *con= (drizzle_con_st*)malloc(sizeof(drizzle_con_st)); |
85 | drizzle_result_st result; |
86 | drizzle_return_t ret; |
87 | drizzle_field_t field; |
88 | @@ -40,6 +40,12 @@ |
89 | size_t size; |
90 | size_t total; |
91 | |
92 | + if (con == NULL) |
93 | + { |
94 | + printf("Failed to allocate memory for drizzle connection"); |
95 | + exit(1); |
96 | + } |
97 | + |
98 | /* The docs say this might fail, so check for errors. */ |
99 | if (drizzle_create(&drizzle) == NULL) |
100 | { |
101 | @@ -47,7 +53,7 @@ |
102 | exit(1); |
103 | } |
104 | |
105 | - if (drizzle_con_create(&drizzle, &con) == NULL) |
106 | + if (drizzle_con_create(&drizzle, con) == NULL) |
107 | { |
108 | printf("drizzle_con_create:%s\n", drizzle_error(&drizzle)); |
109 | exit(1); |
110 | @@ -58,7 +64,7 @@ |
111 | switch(c) |
112 | { |
113 | case 'd': |
114 | - drizzle_con_set_db(&con, optarg); |
115 | + drizzle_con_set_db(con, optarg); |
116 | break; |
117 | |
118 | case 'h': |
119 | @@ -66,7 +72,7 @@ |
120 | break; |
121 | |
122 | case 'm': |
123 | - drizzle_con_add_options(&con, DRIZZLE_CON_MYSQL); |
124 | + drizzle_con_add_options(con, DRIZZLE_CON_MYSQL); |
125 | break; |
126 | |
127 | case 'p': |
128 | @@ -95,8 +101,8 @@ |
129 | } |
130 | } |
131 | |
132 | - drizzle_con_set_tcp(&con, host, port); |
133 | - drizzle_con_set_auth(&con, user, password); |
134 | + drizzle_con_set_tcp(con, host, port); |
135 | + drizzle_con_set_auth(con, user, password); |
136 | |
137 | do |
138 | { |
139 | @@ -118,7 +124,7 @@ |
140 | buffer_total= buffer_size + BUFFER_CHUNK; |
141 | } while ((read_size= read(0, buffer + buffer_size, BUFFER_CHUNK)) != 0); |
142 | |
143 | - (void)drizzle_query(&con, &result, buffer, buffer_size, &ret); |
144 | + (void)drizzle_query(con, &result, buffer, buffer_size, &ret); |
145 | if (ret != DRIZZLE_RETURN_OK) |
146 | { |
147 | printf("drizzle_query:%s\n", drizzle_error(&drizzle)); |
148 | @@ -166,8 +172,9 @@ |
149 | } |
150 | |
151 | drizzle_result_free(&result); |
152 | - drizzle_con_free(&con); |
153 | + drizzle_con_free(con); |
154 | drizzle_free(&drizzle); |
155 | |
156 | + free(con); |
157 | return 0; |
158 | } |
159 | |
160 | === modified file 'examples/proxy.c' |
161 | --- examples/proxy.c 2010-09-28 07:50:05 +0000 |
162 | +++ examples/proxy.c 2010-11-08 13:25:00 +0000 |
163 | @@ -45,9 +45,9 @@ |
164 | drizzle_verbose_t verbose= DRIZZLE_VERBOSE_NEVER; |
165 | drizzle_return_t ret; |
166 | drizzle_st drizzle; |
167 | - drizzle_con_st con_listen; |
168 | - drizzle_con_st server; |
169 | - drizzle_con_st client; |
170 | + drizzle_con_st *con_listen= (drizzle_con_st*)malloc(sizeof(drizzle_con_st)); |
171 | + drizzle_con_st *server= (drizzle_con_st*)malloc(sizeof(drizzle_con_st)); |
172 | + drizzle_con_st *client= (drizzle_con_st*)malloc(sizeof(drizzle_con_st)); |
173 | drizzle_result_st server_result; |
174 | drizzle_result_st client_result; |
175 | drizzle_column_st column; |
176 | @@ -112,19 +112,19 @@ |
177 | drizzle_add_options(&drizzle, DRIZZLE_FREE_OBJECTS); |
178 | drizzle_set_verbose(&drizzle, verbose); |
179 | |
180 | - if (drizzle_con_create(&drizzle, &con_listen) == NULL) |
181 | + if (drizzle_con_create(&drizzle, con_listen) == NULL) |
182 | { |
183 | printf("drizzle_con_create:NULL\n"); |
184 | return 1; |
185 | } |
186 | |
187 | - drizzle_con_add_options(&con_listen, DRIZZLE_CON_LISTEN); |
188 | - drizzle_con_set_tcp(&con_listen, server_host, server_port); |
189 | + drizzle_con_add_options(con_listen, DRIZZLE_CON_LISTEN); |
190 | + drizzle_con_set_tcp(con_listen, server_host, server_port); |
191 | |
192 | if (server_mysql) |
193 | - drizzle_con_add_options(&con_listen, DRIZZLE_CON_MYSQL); |
194 | + drizzle_con_add_options(con_listen, DRIZZLE_CON_MYSQL); |
195 | |
196 | - if (drizzle_con_listen(&con_listen) != DRIZZLE_RETURN_OK) |
197 | + if (drizzle_con_listen(con_listen) != DRIZZLE_RETURN_OK) |
198 | { |
199 | printf("drizzle_con_listen:%s\n", drizzle_error(&drizzle)); |
200 | return 1; |
201 | @@ -132,36 +132,36 @@ |
202 | |
203 | while (1) |
204 | { |
205 | - (void)drizzle_con_accept(&drizzle, &server, &ret); |
206 | + (void)drizzle_con_accept(&drizzle, server, &ret); |
207 | if (ret != DRIZZLE_RETURN_OK) |
208 | { |
209 | printf("drizzle_con_accept:%s\n", drizzle_error(&drizzle)); |
210 | return 1; |
211 | } |
212 | |
213 | - if (drizzle_con_create(&drizzle, &client) == NULL) |
214 | + if (drizzle_con_create(&drizzle, client) == NULL) |
215 | { |
216 | printf("drizzle_con_create:NULL\n"); |
217 | return 1; |
218 | } |
219 | |
220 | - drizzle_con_add_options(&client, |
221 | + drizzle_con_add_options(client, |
222 | DRIZZLE_CON_RAW_PACKET | DRIZZLE_CON_RAW_SCRAMBLE); |
223 | if (client_mysql) |
224 | - drizzle_con_add_options(&client, DRIZZLE_CON_MYSQL); |
225 | - drizzle_con_set_tcp(&client, client_host, client_port); |
226 | + drizzle_con_add_options(client, DRIZZLE_CON_MYSQL); |
227 | + drizzle_con_set_tcp(client, client_host, client_port); |
228 | |
229 | - ret= drizzle_con_connect(&client); |
230 | + ret= drizzle_con_connect(client); |
231 | if (ret != DRIZZLE_RETURN_OK) |
232 | { |
233 | printf("drizzle_con_connect:%s\n", drizzle_error(&drizzle)); |
234 | return 1; |
235 | } |
236 | |
237 | - proxy(&drizzle, &server, &client, &server_result, &client_result, &column); |
238 | + proxy(&drizzle, server, client, &server_result, &client_result, &column); |
239 | |
240 | - drizzle_con_free(&client); |
241 | - drizzle_con_free(&server); |
242 | + drizzle_con_free(client); |
243 | + drizzle_con_free(server); |
244 | |
245 | if (count > 0) |
246 | { |
247 | @@ -172,9 +172,13 @@ |
248 | } |
249 | } |
250 | |
251 | - drizzle_con_free(&con_listen); |
252 | + drizzle_con_free(con_listen); |
253 | drizzle_free(&drizzle); |
254 | |
255 | + free(con_listen); |
256 | + free(server); |
257 | + free(client); |
258 | + |
259 | return 0; |
260 | } |
261 | |
262 | |
263 | === modified file 'examples/server.c' |
264 | --- examples/server.c 2010-09-28 07:50:05 +0000 |
265 | +++ examples/server.c 2010-11-08 13:25:00 +0000 |
266 | @@ -43,8 +43,8 @@ |
267 | drizzle_verbose_t verbose= DRIZZLE_VERBOSE_NEVER; |
268 | drizzle_return_t ret; |
269 | drizzle_st drizzle; |
270 | - drizzle_con_st con_listen; |
271 | - drizzle_con_st con; |
272 | + drizzle_con_st *con_listen= (drizzle_con_st*)malloc(sizeof(drizzle_con_st)); |
273 | + drizzle_con_st *con= (drizzle_con_st*)malloc(sizeof(drizzle_con_st)); |
274 | drizzle_result_st result; |
275 | drizzle_column_st column; |
276 | |
277 | @@ -93,19 +93,19 @@ |
278 | drizzle_add_options(&drizzle, DRIZZLE_FREE_OBJECTS); |
279 | drizzle_set_verbose(&drizzle, verbose); |
280 | |
281 | - if (drizzle_con_create(&drizzle, &con_listen) == NULL) |
282 | + if (drizzle_con_create(&drizzle, con_listen) == NULL) |
283 | { |
284 | printf("drizzle_con_create:NULL\n"); |
285 | return 1; |
286 | } |
287 | |
288 | - drizzle_con_add_options(&con_listen, DRIZZLE_CON_LISTEN); |
289 | - drizzle_con_set_tcp(&con_listen, host, port); |
290 | + drizzle_con_add_options(con_listen, DRIZZLE_CON_LISTEN); |
291 | + drizzle_con_set_tcp(con_listen, host, port); |
292 | |
293 | if (mysql) |
294 | - drizzle_con_add_options(&con_listen, DRIZZLE_CON_MYSQL); |
295 | + drizzle_con_add_options(con_listen, DRIZZLE_CON_MYSQL); |
296 | |
297 | - if (drizzle_con_listen(&con_listen) != DRIZZLE_RETURN_OK) |
298 | + if (drizzle_con_listen(con_listen) != DRIZZLE_RETURN_OK) |
299 | { |
300 | printf("drizzle_con_listen:%s\n", drizzle_error(&drizzle)); |
301 | return 1; |
302 | @@ -113,16 +113,16 @@ |
303 | |
304 | while (1) |
305 | { |
306 | - (void)drizzle_con_accept(&drizzle, &con, &ret); |
307 | + (void)drizzle_con_accept(&drizzle, con, &ret); |
308 | if (ret != DRIZZLE_RETURN_OK) |
309 | { |
310 | printf("drizzle_con_accept:%s\n", drizzle_error(&drizzle)); |
311 | return 1; |
312 | } |
313 | |
314 | - server(&drizzle, &con, &result, &column); |
315 | + server(&drizzle, con, &result, &column); |
316 | |
317 | - drizzle_con_free(&con); |
318 | + drizzle_con_free(con); |
319 | |
320 | if (count > 0) |
321 | { |
322 | @@ -133,9 +133,12 @@ |
323 | } |
324 | } |
325 | |
326 | - drizzle_con_free(&con_listen); |
327 | + drizzle_con_free(con_listen); |
328 | drizzle_free(&drizzle); |
329 | |
330 | + free(con); |
331 | + free(con_listen); |
332 | + |
333 | return 0; |
334 | } |
335 | |
336 | |
337 | === modified file 'examples/simple.c' |
338 | --- examples/simple.c 2010-09-28 07:50:05 +0000 |
339 | +++ examples/simple.c 2010-11-08 13:25:00 +0000 |
340 | @@ -27,7 +27,7 @@ |
341 | const char *query= "SELECT TABLE_SCHEMA,TABLE_NAME FROM TABLES"; |
342 | drizzle_verbose_t verbose= DRIZZLE_VERBOSE_NEVER; |
343 | drizzle_st drizzle; |
344 | - drizzle_con_st con; |
345 | + drizzle_con_st *con= (drizzle_con_st*)malloc(sizeof(drizzle_con_st)); |
346 | drizzle_result_st result; |
347 | drizzle_return_t ret; |
348 | int x; |
349 | @@ -82,29 +82,29 @@ |
350 | |
351 | drizzle_set_verbose(&drizzle, verbose); |
352 | |
353 | - if (drizzle_con_create(&drizzle, &con) == NULL) |
354 | + if (drizzle_con_create(&drizzle, con) == NULL) |
355 | { |
356 | printf("drizzle_con_create:NULL\n"); |
357 | return 1; |
358 | } |
359 | |
360 | if (mysql) |
361 | - drizzle_con_add_options(&con, DRIZZLE_CON_MYSQL); |
362 | - |
363 | - drizzle_con_set_tcp(&con, host, port); |
364 | - drizzle_con_set_db(&con, db); |
365 | - |
366 | - (void)drizzle_query_str(&con, &result, query, &ret); |
367 | + drizzle_con_add_options(con, DRIZZLE_CON_MYSQL); |
368 | + |
369 | + drizzle_con_set_tcp(con, host, port); |
370 | + drizzle_con_set_db(con, db); |
371 | + |
372 | + (void)drizzle_query_str(con, &result, query, &ret); |
373 | if (ret != DRIZZLE_RETURN_OK) |
374 | { |
375 | - printf("drizzle_query:%s\n", drizzle_con_error(&con)); |
376 | + printf("drizzle_query:%s\n", drizzle_con_error(con)); |
377 | return 1; |
378 | } |
379 | |
380 | ret= drizzle_result_buffer(&result); |
381 | if (ret != DRIZZLE_RETURN_OK) |
382 | { |
383 | - printf("drizzle_result_buffer:%s\n", drizzle_con_error(&con)); |
384 | + printf("drizzle_result_buffer:%s\n", drizzle_con_error(con)); |
385 | return 1; |
386 | } |
387 | |
388 | @@ -116,8 +116,9 @@ |
389 | } |
390 | |
391 | drizzle_result_free(&result); |
392 | - drizzle_con_free(&con); |
393 | + drizzle_con_free(con); |
394 | drizzle_free(&drizzle); |
395 | |
396 | + free(con); |
397 | return 0; |
398 | } |
399 | |
400 | === modified file 'examples/simple_multi.c' |
401 | --- examples/simple_multi.c 2010-09-28 07:50:05 +0000 |
402 | +++ examples/simple_multi.c 2010-11-08 13:25:00 +0000 |
403 | @@ -10,6 +10,7 @@ |
404 | |
405 | #include <stdio.h> |
406 | #include <string.h> |
407 | +#include <stdlib.h> |
408 | |
409 | #include <libdrizzle/drizzle_client.h> |
410 | |
411 | @@ -19,13 +20,17 @@ |
412 | { |
413 | const char *query= "SELECT table_schema,table_name FROM tables"; |
414 | drizzle_st drizzle; |
415 | - drizzle_con_st con[SIMPLE_MULTI_COUNT]; |
416 | - drizzle_result_st result[SIMPLE_MULTI_COUNT]; |
417 | - drizzle_query_st ql[SIMPLE_MULTI_COUNT]; |
418 | + drizzle_con_st *con; |
419 | + drizzle_result_st *result; |
420 | + drizzle_query_st *ql; |
421 | drizzle_return_t ret; |
422 | drizzle_row_t row; |
423 | int x; |
424 | |
425 | + con= (drizzle_con_st*)malloc(sizeof(drizzle_con_st) * SIMPLE_MULTI_COUNT); |
426 | + result= (drizzle_result_st*)malloc(sizeof(drizzle_result_st) * SIMPLE_MULTI_COUNT); |
427 | + ql= (drizzle_query_st*)malloc(sizeof(drizzle_query_st) * SIMPLE_MULTI_COUNT); |
428 | + |
429 | if (drizzle_create(&drizzle) == NULL) |
430 | { |
431 | printf("drizzle_create:NULL\n"); |
432 | @@ -92,5 +97,8 @@ |
433 | |
434 | drizzle_free(&drizzle); |
435 | |
436 | + free(con); |
437 | + free(result); |
438 | + free(ql); |
439 | return 0; |
440 | } |
441 | |
442 | === modified file 'examples/sqlite_server.c' |
443 | --- examples/sqlite_server.c 2010-09-28 07:50:05 +0000 |
444 | +++ examples/sqlite_server.c 2010-11-08 13:25:00 +0000 |
445 | @@ -66,11 +66,11 @@ |
446 | bool mysql= false; |
447 | in_port_t port= 0; |
448 | drizzle_return_t ret; |
449 | - sqlite_server server; |
450 | - drizzle_con_st con_listen; |
451 | + sqlite_server *server= (sqlite_server*)malloc(sizeof(sqlite_server)); |
452 | + drizzle_con_st *con_listen= (drizzle_con_st*)malloc(sizeof(drizzle_con_st)); |
453 | |
454 | - server.db= NULL; |
455 | - server.verbose= DRIZZLE_VERBOSE_NEVER; |
456 | + server->db= NULL; |
457 | + server->verbose= DRIZZLE_VERBOSE_NEVER; |
458 | |
459 | while((c = getopt(argc, argv, "c:h:mp:v")) != -1) |
460 | { |
461 | @@ -93,7 +93,7 @@ |
462 | break; |
463 | |
464 | case 'v': |
465 | - server.verbose++; |
466 | + server->verbose++; |
467 | break; |
468 | |
469 | default: |
470 | @@ -108,52 +108,52 @@ |
471 | return 1; |
472 | } |
473 | |
474 | - sqlite3_open(argv[optind], &(server.db)); |
475 | - if (server.db == NULL) |
476 | + sqlite3_open(argv[optind], &(server->db)); |
477 | + if (server->db == NULL) |
478 | { |
479 | printf("sqlite3_open: could not open sqlite3 db\n"); |
480 | return 1; |
481 | } |
482 | |
483 | - if (drizzle_create(&server.drizzle) == NULL) |
484 | + if (drizzle_create(&(server->drizzle)) == NULL) |
485 | { |
486 | printf("drizzle_create:NULL\n"); |
487 | return 1; |
488 | } |
489 | |
490 | - drizzle_add_options(&server.drizzle, DRIZZLE_FREE_OBJECTS); |
491 | - drizzle_set_verbose(&server.drizzle, server.verbose); |
492 | + drizzle_add_options(&(server->drizzle), DRIZZLE_FREE_OBJECTS); |
493 | + drizzle_set_verbose(&(server->drizzle), server->verbose); |
494 | |
495 | - if (drizzle_con_create(&server.drizzle, &con_listen) == NULL) |
496 | + if (drizzle_con_create(&(server->drizzle), con_listen) == NULL) |
497 | { |
498 | printf("drizzle_con_create:NULL\n"); |
499 | return 1; |
500 | } |
501 | |
502 | - drizzle_con_add_options(&con_listen, DRIZZLE_CON_LISTEN); |
503 | - drizzle_con_set_tcp(&con_listen, host, port); |
504 | + drizzle_con_add_options(con_listen, DRIZZLE_CON_LISTEN); |
505 | + drizzle_con_set_tcp(con_listen, host, port); |
506 | |
507 | if (mysql) |
508 | - drizzle_con_add_options(&con_listen, DRIZZLE_CON_MYSQL); |
509 | + drizzle_con_add_options(con_listen, DRIZZLE_CON_MYSQL); |
510 | |
511 | - if (drizzle_con_listen(&con_listen) != DRIZZLE_RETURN_OK) |
512 | + if (drizzle_con_listen(con_listen) != DRIZZLE_RETURN_OK) |
513 | { |
514 | - printf("drizzle_con_listen:%s\n", drizzle_error(&server.drizzle)); |
515 | + printf("drizzle_con_listen:%s\n", drizzle_error(&(server->drizzle))); |
516 | return 1; |
517 | } |
518 | |
519 | while (1) |
520 | { |
521 | - (void)drizzle_con_accept(&server.drizzle, &server.con, &ret); |
522 | + (void)drizzle_con_accept(&(server->drizzle), &(server->con), &ret); |
523 | if (ret != DRIZZLE_RETURN_OK) |
524 | { |
525 | - printf("drizzle_con_accept:%s\n", drizzle_error(&server.drizzle)); |
526 | + printf("drizzle_con_accept:%s\n", drizzle_error(&(server->drizzle))); |
527 | return 1; |
528 | } |
529 | |
530 | - server_run(&server); |
531 | + server_run(server); |
532 | |
533 | - drizzle_con_free(&server.con); |
534 | + drizzle_con_free(&(server->con)); |
535 | |
536 | if (count > 0) |
537 | { |
538 | @@ -164,9 +164,11 @@ |
539 | } |
540 | } |
541 | |
542 | - drizzle_con_free(&con_listen); |
543 | - drizzle_free(&server.drizzle); |
544 | - sqlite3_close(server.db); |
545 | + drizzle_con_free(con_listen); |
546 | + drizzle_free(&(server->drizzle)); |
547 | + sqlite3_close(server->db); |
548 | + free(con_listen); |
549 | + free(server); |
550 | |
551 | return 0; |
552 | } |
553 | @@ -308,7 +310,7 @@ |
554 | sqlite_server *server= (sqlite_server *)data; |
555 | drizzle_return_t ret; |
556 | int x; |
557 | - size_t sizes[8192]; |
558 | + size_t *sizes= (size_t*)malloc(sizeof(size_t)*8192); |
559 | |
560 | if (server->send_columns == true) |
561 | { |
562 | @@ -375,6 +377,8 @@ |
563 | |
564 | server->rows++; |
565 | |
566 | + free(sizes); |
567 | + |
568 | return 0; |
569 | } |
570 | |
571 | |
572 | === modified file 'm4/pandora_warnings.m4' |
573 | --- m4/pandora_warnings.m4 2010-10-07 05:19:48 +0000 |
574 | +++ m4/pandora_warnings.m4 2010-11-08 13:25:00 +0000 |
575 | @@ -209,7 +209,7 @@ |
576 | [ac_cv_safe_to_use_Wextra_=no]) |
577 | CFLAGS="$save_CFLAGS"]) |
578 | |
579 | - BASE_WARNINGS="${W_FAIL} -pedantic -Wall -Wundef -Wshadow ${NO_UNUSED} ${F_DIAGNOSTICS_SHOW_OPTION} ${BASE_WARNINGS_FULL}" |
580 | + BASE_WARNINGS="${W_FAIL} -pedantic -Wall -Wundef -Wshadow -Wframe-larger-than=32768 ${NO_UNUSED} ${F_DIAGNOSTICS_SHOW_OPTION} ${BASE_WARNINGS_FULL}" |
581 | AS_IF([test "$ac_cv_safe_to_use_Wextra_" = "yes"], |
582 | [BASE_WARNINGS="${BASE_WARNINGS} -Wextra"], |
583 | [BASE_WARNINGS="${BASE_WARNINGS} -W"]) |
584 | |
585 | === modified file 'plugin/archive/archive_performance.cc' |
586 | --- plugin/archive/archive_performance.cc 2010-06-02 21:32:27 +0000 |
587 | +++ plugin/archive/archive_performance.cc 2010-11-08 13:25:00 +0000 |
588 | @@ -23,6 +23,7 @@ |
589 | #include <string.h> |
590 | #include <fcntl.h> |
591 | #include <sys/stat.h> |
592 | +#include <memory> |
593 | |
594 | #if TIME_WITH_SYS_TIME |
595 | # include <sys/time.h> |
596 | @@ -67,7 +68,8 @@ |
597 | for (method= AZ_METHOD_BLOCK; method < AZ_METHOD_MAX; method++) |
598 | { |
599 | unsigned int ret; |
600 | - azio_stream reader_handle; |
601 | + std::auto_ptr<azio_stream> reader_handle_ap(new azio_stream); |
602 | + azio_stream &reader_handle= *reader_handle_ap.get(); |
603 | |
604 | if (method) |
605 | printf("Performing azio_read() test\n"); |
606 | @@ -97,7 +99,8 @@ |
607 | |
608 | static int generate_data(uint64_t rows_to_test) |
609 | { |
610 | - azio_stream writer_handle; |
611 | + std::auto_ptr<azio_stream> writer_handle_ap(new azio_stream); |
612 | + azio_stream &writer_handle= *writer_handle_ap.get(); |
613 | uint64_t x; |
614 | unsigned int ret; |
615 | struct timeval start_time, end_time; |
616 | |
617 | === modified file 'plugin/archive/archive_reader.cc' |
618 | --- plugin/archive/archive_reader.cc 2010-08-20 02:23:54 +0000 |
619 | +++ plugin/archive/archive_reader.cc 2010-11-08 13:25:00 +0000 |
620 | @@ -32,6 +32,7 @@ |
621 | #include <stdio.h> |
622 | #include <stdarg.h> |
623 | #include <fcntl.h> |
624 | +#include <memory> |
625 | #include "drizzled/charset_info.h" |
626 | #include "drizzled/internal/m_string.h" |
627 | |
628 | @@ -85,7 +86,8 @@ |
629 | ; |
630 | |
631 | unsigned int ret; |
632 | - azio_stream reader_handle; |
633 | + std::auto_ptr<azio_stream> reader_handle_ap(new azio_stream); |
634 | + azio_stream &reader_handle= *reader_handle_ap.get(); |
635 | |
636 | std::string system_config_dir_archive_reader(SYSCONFDIR); |
637 | system_config_dir_archive_reader.append("/drizzle/archive_reader.cnf"); |
638 | @@ -155,7 +157,8 @@ |
639 | |
640 | if (opt_autoincrement) |
641 | { |
642 | - azio_stream writer_handle; |
643 | + std::auto_ptr<azio_stream> writer_handle_ap(new azio_stream); |
644 | + azio_stream &writer_handle= *writer_handle_ap.get(); |
645 | |
646 | if (new_auto_increment_value) |
647 | { |
648 | @@ -252,7 +255,8 @@ |
649 | uint64_t row_count= 0; |
650 | char *buffer; |
651 | |
652 | - azio_stream writer_handle; |
653 | + std::auto_ptr<azio_stream> writer_handle_ap(new azio_stream); |
654 | + azio_stream &writer_handle= *writer_handle_ap.get(); |
655 | |
656 | buffer= (char *)malloc(reader_handle.longest_row); |
657 | if (buffer == NULL) |
658 | |
659 | === modified file 'plugin/archive/archive_test.cc' |
660 | --- plugin/archive/archive_test.cc 2010-06-02 21:32:27 +0000 |
661 | +++ plugin/archive/archive_test.cc 2010-11-08 13:25:00 +0000 |
662 | @@ -22,6 +22,7 @@ |
663 | #include <fcntl.h> |
664 | #include <unistd.h> |
665 | #include <cstdlib> |
666 | +#include <memory> |
667 | |
668 | #if TIME_WITH_SYS_TIME |
669 | # include <sys/time.h> |
670 | @@ -111,7 +112,10 @@ |
671 | int error; |
672 | unsigned int x; |
673 | int written_rows= 0; |
674 | - azio_stream writer_handle, reader_handle; |
675 | + std::auto_ptr<azio_stream> writer_handle_ap(new azio_stream); |
676 | + std::auto_ptr<azio_stream> reader_handle_ap(new azio_stream); |
677 | + azio_stream &writer_handle= *writer_handle_ap.get(); |
678 | + azio_stream &reader_handle= *reader_handle_ap.get(); |
679 | |
680 | memcpy(test_string, TEST_STRING_INIT, 1024); |
681 | |
682 | @@ -285,7 +289,10 @@ |
683 | int size_test(uint64_t length, uint64_t rows_to_test_for, |
684 | az_method method) |
685 | { |
686 | - azio_stream writer_handle, reader_handle; |
687 | + std::auto_ptr<azio_stream> writer_handle_ap(new azio_stream); |
688 | + std::auto_ptr<azio_stream> reader_handle_ap(new azio_stream); |
689 | + azio_stream &writer_handle= *writer_handle_ap.get(); |
690 | + azio_stream &reader_handle= *reader_handle_ap.get(); |
691 | uint64_t write_length; |
692 | uint64_t read_length; |
693 | uint64_t count; |
694 | |
695 | === modified file 'plugin/archive/concurrency_test.cc' |
696 | --- plugin/archive/concurrency_test.cc 2010-06-02 21:32:27 +0000 |
697 | +++ plugin/archive/concurrency_test.cc 2010-11-08 13:25:00 +0000 |
698 | @@ -37,6 +37,7 @@ |
699 | #ifndef __WIN__ |
700 | #include <sys/wait.h> |
701 | #endif |
702 | +#include <memory> |
703 | |
704 | #ifdef __WIN__ |
705 | #define srandom srand |
706 | @@ -136,7 +137,8 @@ |
707 | { |
708 | unsigned int x; |
709 | uint64_t total; |
710 | - azio_stream writer_handle; |
711 | + std::auto_ptr<azio_stream> writer_handle_ap(new azio_stream); |
712 | + azio_stream &writer_handle= *writer_handle_ap.get(); |
713 | thread_context_st *context; |
714 | pthread_t mainthread; /* Thread descriptor */ |
715 | pthread_attr_t attr; /* Thread attributes */ |
716 | @@ -263,7 +265,8 @@ |
717 | uint64_t count; |
718 | int ret; |
719 | int error; |
720 | - azio_stream reader_handle; |
721 | + std::auto_ptr<azio_stream> reader_handle_ap(new azio_stream); |
722 | + azio_stream &reader_handle= *reader_handle_ap.get(); |
723 | |
724 | if (!(ret= azopen(&reader_handle, TEST_FILENAME, O_RDONLY, |
725 | context->use_aio))) |
726 | |
727 | === modified file 'plugin/archive/ha_archive.cc' |
728 | --- plugin/archive/ha_archive.cc 2010-10-30 01:19:00 +0000 |
729 | +++ plugin/archive/ha_archive.cc 2010-11-08 13:25:00 +0000 |
730 | @@ -18,6 +18,7 @@ |
731 | #include "config.h" |
732 | |
733 | #include "plugin/archive/archive_engine.h" |
734 | +#include <memory> |
735 | |
736 | using namespace std; |
737 | using namespace drizzled; |
738 | @@ -164,24 +165,24 @@ |
739 | error= EEXIST; |
740 | |
741 | { |
742 | - azio_stream proto_stream; |
743 | + auto_ptr<azio_stream> proto_stream(new azio_stream); |
744 | char* proto_string; |
745 | - if (azopen(&proto_stream, proto_path.c_str(), O_RDONLY, AZ_METHOD_BLOCK) == 0) |
746 | + if (azopen(proto_stream.get(), proto_path.c_str(), O_RDONLY, AZ_METHOD_BLOCK) == 0) |
747 | return HA_ERR_CRASHED_ON_USAGE; |
748 | |
749 | - proto_string= (char*)malloc(sizeof(char) * proto_stream.frm_length); |
750 | + proto_string= (char*)malloc(sizeof(char) * proto_stream->frm_length); |
751 | if (proto_string == NULL) |
752 | { |
753 | - azclose(&proto_stream); |
754 | + azclose(proto_stream.get()); |
755 | return ENOMEM; |
756 | } |
757 | |
758 | - azread_frm(&proto_stream, proto_string); |
759 | + azread_frm(proto_stream.get(), proto_string); |
760 | |
761 | - if (table_proto.ParseFromArray(proto_string, proto_stream.frm_length) == false) |
762 | + if (table_proto.ParseFromArray(proto_string, proto_stream->frm_length) == false) |
763 | error= HA_ERR_CRASHED_ON_USAGE; |
764 | |
765 | - azclose(&proto_stream); |
766 | + azclose(proto_stream.get()); |
767 | free(proto_string); |
768 | } |
769 | |
770 | @@ -259,7 +260,7 @@ |
771 | |
772 | bool ArchiveShare::prime(uint64_t *auto_increment) |
773 | { |
774 | - azio_stream archive_tmp; |
775 | + auto_ptr<azio_stream> archive_tmp(new azio_stream); |
776 | |
777 | /* |
778 | We read the meta file, but do not mark it dirty. Since we are not |
779 | @@ -267,19 +268,19 @@ |
780 | anything but reading... open it for write and we will generate null |
781 | compression writes). |
782 | */ |
783 | - if (!(azopen(&archive_tmp, data_file_name.c_str(), O_RDONLY, |
784 | + if (!(azopen(archive_tmp.get(), data_file_name.c_str(), O_RDONLY, |
785 | AZ_METHOD_BLOCK))) |
786 | return false; |
787 | |
788 | - *auto_increment= archive_tmp.auto_increment + 1; |
789 | - rows_recorded= (ha_rows)archive_tmp.rows; |
790 | - crashed= archive_tmp.dirty; |
791 | + *auto_increment= archive_tmp->auto_increment + 1; |
792 | + rows_recorded= (ha_rows)archive_tmp->rows; |
793 | + crashed= archive_tmp->dirty; |
794 | if (version < global_version) |
795 | { |
796 | version_rows= rows_recorded; |
797 | version= global_version; |
798 | } |
799 | - azclose(&archive_tmp); |
800 | + azclose(archive_tmp.get()); |
801 | |
802 | return true; |
803 | } |
804 | @@ -501,7 +502,7 @@ |
805 | drizzled::message::Table& proto) |
806 | { |
807 | int error= 0; |
808 | - azio_stream create_stream; /* Archive file we are working with */ |
809 | + auto_ptr<azio_stream> create_stream(new azio_stream); |
810 | uint64_t auto_increment_value; |
811 | string serialized_proto; |
812 | |
813 | @@ -528,7 +529,7 @@ |
814 | named_file.append(ARZ); |
815 | |
816 | errno= 0; |
817 | - if (azopen(&create_stream, named_file.c_str(), O_CREAT|O_RDWR, |
818 | + if (azopen(create_stream.get(), named_file.c_str(), O_CREAT|O_RDWR, |
819 | AZ_METHOD_BLOCK) == 0) |
820 | { |
821 | error= errno; |
822 | @@ -547,7 +548,7 @@ |
823 | return(error ? error : -1); |
824 | } |
825 | |
826 | - if (azwrite_frm(&create_stream, serialized_proto.c_str(), |
827 | + if (azwrite_frm(create_stream.get(), serialized_proto.c_str(), |
828 | serialized_proto.length())) |
829 | { |
830 | unlink(named_file.c_str()); |
831 | @@ -559,7 +560,7 @@ |
832 | { |
833 | int write_length; |
834 | |
835 | - write_length= azwrite_comment(&create_stream, |
836 | + write_length= azwrite_comment(create_stream.get(), |
837 | proto.options().comment().c_str(), |
838 | proto.options().comment().length()); |
839 | |
840 | @@ -576,10 +577,10 @@ |
841 | Yes you need to do this, because the starting value |
842 | for the autoincrement may not be zero. |
843 | */ |
844 | - create_stream.auto_increment= auto_increment_value ? |
845 | + create_stream->auto_increment= auto_increment_value ? |
846 | auto_increment_value - 1 : 0; |
847 | |
848 | - if (azclose(&create_stream)) |
849 | + if (azclose(create_stream.get())) |
850 | { |
851 | error= errno; |
852 | unlink(named_file.c_str()); |
853 | @@ -949,7 +950,7 @@ |
854 | int ha_archive::optimize() |
855 | { |
856 | int rc= 0; |
857 | - azio_stream writer; |
858 | + auto_ptr<azio_stream> writer(new azio_stream); |
859 | |
860 | init_archive_reader(); |
861 | |
862 | @@ -972,13 +973,13 @@ |
863 | std::string writer_filename= share->table_name; |
864 | writer_filename.append(ARN); |
865 | |
866 | - if (!(azopen(&writer, writer_filename.c_str(), O_CREAT|O_RDWR, AZ_METHOD_BLOCK))) |
867 | + if (!(azopen(writer.get(), writer_filename.c_str(), O_CREAT|O_RDWR, AZ_METHOD_BLOCK))) |
868 | { |
869 | free(proto_string); |
870 | return(HA_ERR_CRASHED_ON_USAGE); |
871 | } |
872 | |
873 | - azwrite_frm(&writer, proto_string, archive.frm_length); |
874 | + azwrite_frm(writer.get(), proto_string, archive.frm_length); |
875 | |
876 | /* |
877 | An extended rebuild is a lot more effort. We open up each row and re-record it. |
878 | @@ -1016,7 +1017,7 @@ |
879 | if (rc != 0) |
880 | break; |
881 | |
882 | - real_write_row(getTable()->getInsertRecord(), &writer); |
883 | + real_write_row(getTable()->getInsertRecord(), writer.get()); |
884 | /* |
885 | Long term it should be possible to optimize this so that |
886 | it is not called on each row. |
887 | @@ -1036,7 +1037,7 @@ |
888 | (share->archive_write.auto_increment= auto_value) + 1; |
889 | } |
890 | } |
891 | - share->rows_recorded= (ha_rows)writer.rows; |
892 | + share->rows_recorded= (ha_rows)writer->rows; |
893 | } |
894 | |
895 | if (rc && rc != HA_ERR_END_OF_FILE) |
896 | @@ -1045,7 +1046,7 @@ |
897 | } |
898 | } |
899 | |
900 | - azclose(&writer); |
901 | + azclose(writer.get()); |
902 | share->dirty= false; |
903 | |
904 | azclose(&archive); |
905 | @@ -1057,7 +1058,7 @@ |
906 | return(rc); |
907 | error: |
908 | free(proto_string); |
909 | - azclose(&writer); |
910 | + azclose(writer.get()); |
911 | |
912 | return(rc); |
913 | } |
914 | |
915 | === modified file 'plugin/innobase/row/row0merge.c' |
916 | --- plugin/innobase/row/row0merge.c 2010-10-13 05:47:19 +0000 |
917 | +++ plugin/innobase/row/row0merge.c 2010-11-08 13:25:00 +0000 |
918 | @@ -1395,7 +1395,7 @@ |
919 | { |
920 | mem_heap_t* heap; /*!< memory heap for offsets0, offsets1 */ |
921 | |
922 | - mrec_buf_t buf[3]; /*!< buffer for handling split mrec in block[] */ |
923 | + mrec_buf_t *buf; /*!< buffer for handling split mrec in block[] */ |
924 | const byte* b0; /*!< pointer to block[0] */ |
925 | const byte* b1; /*!< pointer to block[1] */ |
926 | byte* b2; /*!< pointer to block[2] */ |
927 | @@ -1417,6 +1417,8 @@ |
928 | |
929 | heap = row_merge_heap_create(index, &offsets0, &offsets1); |
930 | |
931 | + buf = mem_heap_alloc(heap, sizeof(mrec_buf_t) * 3); |
932 | + |
933 | /* Write a record and read the next record. Split the output |
934 | file in two halves, which can be merged on the following pass. */ |
935 | |
936 | @@ -1501,7 +1503,7 @@ |
937 | { |
938 | mem_heap_t* heap; /*!< memory heap for offsets0, offsets1 */ |
939 | |
940 | - mrec_buf_t buf[3]; /*!< buffer for handling |
941 | + mrec_buf_t *buf; /*!< buffer for handling |
942 | split mrec in block[] */ |
943 | const byte* b0; /*!< pointer to block[0] */ |
944 | byte* b2; /*!< pointer to block[2] */ |
945 | @@ -1521,6 +1523,8 @@ |
946 | |
947 | heap = row_merge_heap_create(index, &offsets0, &offsets1); |
948 | |
949 | + buf = mem_heap_alloc(heap, sizeof(mrec_buf_t) * 3); |
950 | + |
951 | /* Write a record and read the next record. Split the output |
952 | file in two halves, which can be merged on the following pass. */ |
953 | |
954 | |
955 | === modified file 'plugin/logging_gearman/logging_gearman.cc' |
956 | --- plugin/logging_gearman/logging_gearman.cc 2010-08-17 15:33:10 +0000 |
957 | +++ plugin/logging_gearman/logging_gearman.cc 2010-11-08 13:25:00 +0000 |
958 | @@ -31,6 +31,7 @@ |
959 | #include <fcntl.h> |
960 | #include <cstdio> |
961 | #include <cerrno> |
962 | +#include <memory> |
963 | |
964 | using namespace drizzled; |
965 | namespace po= boost::program_options; |
966 | @@ -226,7 +227,7 @@ |
967 | |
968 | virtual bool post(Session *session) |
969 | { |
970 | - char msgbuf[MAX_MSG_LEN]; |
971 | + std::auto_ptr<char> msgbuf(new char[MAX_MSG_LEN]); |
972 | int msgbuf_len= 0; |
973 | |
974 | assert(session != NULL); |
975 | @@ -251,7 +252,7 @@ |
976 | const char *dbs= session->db.empty() ? "" : session->db.c_str(); |
977 | |
978 | msgbuf_len= |
979 | - snprintf(msgbuf, MAX_MSG_LEN, |
980 | + snprintf(msgbuf.get(), MAX_MSG_LEN, |
981 | "%"PRIu64",%"PRIu64",%"PRIu64",\"%.*s\",\"%s\",\"%.*s\"," |
982 | "%"PRIu64",%"PRIu64",%"PRIu64",%"PRIu64",%"PRIu64"," |
983 | "%"PRIu32",%"PRIu32",%"PRIu32",\"%s\"", |
984 | @@ -284,7 +285,7 @@ |
985 | (void) gearman_client_do_background(&gearman_client, |
986 | sysvar_logging_gearman_function, |
987 | NULL, |
988 | - (void *) msgbuf, |
989 | + (void *) msgbuf.get(), |
990 | (size_t) msgbuf_len, |
991 | job_handle); |
992 | |
993 | |
994 | === modified file 'plugin/myisam/ha_myisam.cc' |
995 | --- plugin/myisam/ha_myisam.cc 2010-10-25 20:36:07 +0000 |
996 | +++ plugin/myisam/ha_myisam.cc 2010-11-08 13:25:00 +0000 |
997 | @@ -41,6 +41,7 @@ |
998 | #include <sstream> |
999 | #include <map> |
1000 | #include <algorithm> |
1001 | +#include <memory> |
1002 | #include <boost/program_options.hpp> |
1003 | #include <drizzled/module/option_map.h> |
1004 | |
1005 | @@ -902,7 +903,8 @@ |
1006 | else if (mode == HA_KEY_SWITCH_NONUNIQ_SAVE) |
1007 | { |
1008 | Session *session= getTable()->in_use; |
1009 | - MI_CHECK param; |
1010 | + auto_ptr<MI_CHECK> param_ap(new MI_CHECK); |
1011 | + MI_CHECK ¶m= *param_ap.get(); |
1012 | const char *save_proc_info= session->get_proc_info(); |
1013 | session->set_proc_info("Creating index"); |
1014 | myisamchk_init(¶m); |
1015 | |
1016 | === modified file 'plugin/myisam/mi_open.cc' |
1017 | --- plugin/myisam/mi_open.cc 2010-10-06 20:34:11 +0000 |
1018 | +++ plugin/myisam/mi_open.cc 2010-11-08 13:25:00 +0000 |
1019 | @@ -19,6 +19,7 @@ |
1020 | |
1021 | #include <string.h> |
1022 | #include <algorithm> |
1023 | +#include <memory> |
1024 | |
1025 | #include "drizzled/charset_info.h" |
1026 | #include "drizzled/internal/m_string.h" |
1027 | @@ -86,8 +87,11 @@ |
1028 | unsigned char *disk_cache= NULL; |
1029 | unsigned char *disk_pos, *end_pos; |
1030 | MI_INFO info,*m_info,*old_info; |
1031 | - MYISAM_SHARE share_buff,*share; |
1032 | - ulong rec_per_key_part[HA_MAX_POSSIBLE_KEY*MI_MAX_KEY_SEG]; |
1033 | + auto_ptr<MYISAM_SHARE> share_buff_ap(new MYISAM_SHARE); |
1034 | + MYISAM_SHARE &share_buff= *share_buff_ap.get(); |
1035 | + MYISAM_SHARE *share; |
1036 | + auto_ptr<ulong> rec_per_key_part_ap(new ulong[HA_MAX_POSSIBLE_KEY*MI_MAX_KEY_SEG]); |
1037 | + ulong *rec_per_key_part= rec_per_key_part_ap.get(); |
1038 | internal::my_off_t key_root[HA_MAX_POSSIBLE_KEY],key_del[MI_MAX_KEY_BLOCK_SIZE]; |
1039 | uint64_t max_key_file_length, max_data_file_length; |
1040 | |
1041 | |
1042 | === modified file 'plugin/pbms/src/backup_ms.cc' |
1043 | --- plugin/pbms/src/backup_ms.cc 2010-10-18 21:21:20 +0000 |
1044 | +++ plugin/pbms/src/backup_ms.cc 2010-11-08 13:25:00 +0000 |
1045 | @@ -469,10 +469,11 @@ |
1046 | uint8_t blob_storage_type; |
1047 | uint16_t tab_index; |
1048 | uint32_t mod_time; |
1049 | - char transferBuffer[MS_BACKUP_BUFFER_SIZE]; |
1050 | + char *transferBuffer; |
1051 | CloudKeyRec cloud_key; |
1052 | |
1053 | - |
1054 | + transferBuffer= (char*)malloc(MS_BACKUP_BUFFER_SIZE); |
1055 | + |
1056 | bu_BackupRunning = true; |
1057 | bu_State = BU_RUNNING; |
1058 | |
1059 | @@ -684,7 +685,8 @@ |
1060 | bu_State = BU_TERMINATED; |
1061 | else |
1062 | bu_State = BU_COMPLETED; |
1063 | - |
1064 | + |
1065 | + free(transferBuffer); |
1066 | } |
1067 | |
1068 | catch_(a) { |
1069 | |
1070 | === modified file 'plugin/pbms/src/trans_log_ms.cc' |
1071 | --- plugin/pbms/src/trans_log_ms.cc 2010-10-02 21:15:42 +0000 |
1072 | +++ plugin/pbms/src/trans_log_ms.cc 2010-11-08 13:25:00 +0000 |
1073 | @@ -211,11 +211,11 @@ |
1074 | log_size = DFLT_TRANS_LOG_LIST_SIZE * sizeof(MSDiskTransRec) + sizeof(MSDiskTransHeadRec); |
1075 | |
1076 | // Preallocate the log space and initialize it. |
1077 | - MSDiskTransRec recs[1024] = {}; |
1078 | + MSDiskTransRec *recs= (MSDiskTransRec*)calloc(1024, sizeof(MSDiskTransRec)); |
1079 | off64_t offset = sizeof(MSDiskTransHeadRec); |
1080 | uint64_t num_records = DFLT_TRANS_LOG_LIST_SIZE; |
1081 | size_t size; |
1082 | - |
1083 | + |
1084 | while (num_records) { |
1085 | if (num_records < 1024) |
1086 | size = num_records; |
1087 | @@ -226,6 +226,8 @@ |
1088 | num_records -= size; |
1089 | } |
1090 | |
1091 | + free(recs); |
1092 | + |
1093 | trans->txn_MaxRecords = DFLT_TRANS_LOG_LIST_SIZE; |
1094 | trans->txn_ReqestedMaxRecords = DFLT_TRANS_LOG_LIST_SIZE; |
1095 | trans->txn_MaxCheckPoint = DFLT_TRANS_CHECKPOINT_THRESHOLD; |
I don't know if it matters, but apparently auto_ptr is deprecated for C++0x. I suspect when that happens this will generate some kind of warning:
http:// en.wikipedia. org/wiki/ Auto_ptr