Merge lp:~stewart/drizzle/warning-stack-frame-32k into lp:drizzle/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
Reviewer Review Type Date Requested Status
Drizzle Developers Pending
Review via email: mp+40325@code.launchpad.net

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://hudson.drizzle.org/view/Drizzle-param/job/drizzle-param/594/

To post a comment you must log in.
Revision history for this message
Andrew Hutchings (linuxjedi) wrote :

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

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 &param= *param_ap.get();
1012 const char *save_proc_info= session->get_proc_info();
1013 session->set_proc_info("Creating index");
1014 myisamchk_init(&param);
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;

Subscribers

People subscribed via source and target branches