dyn0dyn.ic, dyn0dyn.h:

  Fix the crash on AIX in a simple insert
parent 9961a57e
...@@ -17,13 +17,8 @@ typedef struct dyn_block_struct dyn_block_t; ...@@ -17,13 +17,8 @@ typedef struct dyn_block_struct dyn_block_t;
typedef dyn_block_t dyn_array_t; typedef dyn_block_t dyn_array_t;
/* Initial 'payload' size in bytes in a dynamic array block */ /* This must be > MLOG_BUF_MARGIN + 30 */
#ifndef _AIX #define DYN_ARRAY_DATA_SIZE 512
#define DYN_ARRAY_DATA_SIZE 1024
#else
/* AIX has a quite small stack / thread */
#define DYN_ARRAY_DATA_SIZE 128
#endif
/************************************************************************* /*************************************************************************
Initializes a dynamic array. */ Initializes a dynamic array. */
......
...@@ -185,7 +185,8 @@ dyn_array_open( ...@@ -185,7 +185,8 @@ dyn_array_open(
/*===========*/ /*===========*/
/* out: pointer to the buffer */ /* out: pointer to the buffer */
dyn_array_t* arr, /* in: dynamic array */ dyn_array_t* arr, /* in: dynamic array */
ulint size) /* in: size in bytes of the buffer */ ulint size) /* in: size in bytes of the buffer; MUST be
smaller than DYN_ARRAY_DATA_SIZE! */
{ {
dyn_block_t* block; dyn_block_t* block;
ulint used; ulint used;
...@@ -207,6 +208,7 @@ dyn_array_open( ...@@ -207,6 +208,7 @@ dyn_array_open(
if (used + size > DYN_ARRAY_DATA_SIZE) { if (used + size > DYN_ARRAY_DATA_SIZE) {
block = dyn_array_add_block(arr); block = dyn_array_add_block(arr);
used = block->used; used = block->used;
ut_a(size <= DYN_ARRAY_DATA_SIZE);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment