diff --git a/sql/table.cc b/sql/table.cc index 9fc840f7a3d..aeccab78211 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -539,17 +539,28 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head, } if (next_chunk + 4 < buff_end) { - if ((share->partition_info_len= uint4korr(next_chunk))) + uint32 partition_info_len = uint4korr(next_chunk); +#ifdef WITH_PARTITION_STORAGE_ENGINE + if ((share->partition_info_len= partition_info_len)) { if (!(share->partition_info= (uchar*) memdup_root(&share->mem_root, next_chunk + 4, - share->partition_info_len + 1))) + partition_info_len + 1))) { my_free(buff, MYF(0)); goto err; } - next_chunk+= share->partition_info_len + 5; + next_chunk++; } +#else + if (partition_info_len) + { + DBUG_PRINT("info", ("WITH_PARTITION_STORAGE_ENGINE is not defined")); + my_free(buff, MYF(0)); + goto err; + } +#endif + next_chunk+= 4 + partition_info_len; } keyinfo= share->key_info; for (i= 0; i < keys; i++, keyinfo++)