diff options
Diffstat (limited to 'storage/innobase/row/row0merge.cc')
-rw-r--r-- | storage/innobase/row/row0merge.cc | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/storage/innobase/row/row0merge.cc b/storage/innobase/row/row0merge.cc index 513a613011c..f75054c3a55 100644 --- a/storage/innobase/row/row0merge.cc +++ b/storage/innobase/row/row0merge.cc @@ -2141,10 +2141,14 @@ corrupted_metadata: mem_heap_empty(row_heap); - page_cur_move_to_next(cur); - stage->n_pk_recs_inc(); + if (!page_cur_move_to_next(cur)) { +corrupted_rec: + err = DB_CORRUPTION; + goto err_exit; + } + if (page_cur_is_after_last(cur)) { stage->inc(); @@ -2250,9 +2254,10 @@ end_of_index: btr_leaf_page_release(page_cur_get_block(cur), BTR_SEARCH_LEAF, &mtr); page_cur_set_before_first(block, cur); - page_cur_move_to_next(cur); - - ut_ad(!page_cur_is_after_last(cur)); + if (!page_cur_move_to_next(cur) + || page_cur_is_after_last(cur)) { + goto corrupted_rec; + } } } |