[Bf-blender-cvs] [218793464d4] gpencil-new-data-proposal: fix comparison function to prevent seg fault if structures are not similar
Amelie Fondevilla
noreply at git.blender.org
Mon Dec 5 15:01:20 CET 2022
Commit: 218793464d452a561d160c34d5113a2b3afa9bd2
Author: Amelie Fondevilla
Date: Mon Dec 5 14:22:04 2022 +0100
Branches: gpencil-new-data-proposal
https://developer.blender.org/rB218793464d452a561d160c34d5113a2b3afa9bd2
fix comparison function to prevent seg fault if structures are not similar
===================================================================
M source/blender/blenkernel/intern/gpencil_new_proposal_test.cc
===================================================================
diff --git a/source/blender/blenkernel/intern/gpencil_new_proposal_test.cc b/source/blender/blenkernel/intern/gpencil_new_proposal_test.cc
index 073155500ec..aad705e089b 100644
--- a/source/blender/blenkernel/intern/gpencil_new_proposal_test.cc
+++ b/source/blender/blenkernel/intern/gpencil_new_proposal_test.cc
@@ -126,34 +126,38 @@ static void compare_data_structures(const GPData &ngpd, const bGPdata *ogpd)
/* Compare Layers */
EXPECT_EQ(ngpd.layers_size, ogpd->totlayer);
- int offset{-1};
- LISTBASE_FOREACH (bGPDlayer *, lay, &ogpd->layers) {
- const ::GPLayer *nlay = &(ngpd.layers_array[++offset]);
+ if (ngpd.layers_size == ogpd->totlayer) {
+ int offset{-1};
+ LISTBASE_FOREACH (bGPDlayer *, lay, &ogpd->layers) {
+ const ::GPLayer *nlay = &(ngpd.layers_array[++offset]);
- // Same name
- EXPECT_EQ(std::strcmp(nlay->name, lay->info), 0);
+ // Same name
+ EXPECT_EQ(std::strcmp(nlay->name, lay->info), 0);
+ }
}
/* Compare Frames */
EXPECT_EQ(ngpd.frames_size, ogpd->totframe);
- // get plain list of frames
- std::vector<std::pair<int, int>> ogpd_frames;
- int layer_id{0};
- LISTBASE_FOREACH (bGPDlayer *, lay, &ogpd->layers) {
- LISTBASE_FOREACH (bGPDframe *, frm, &lay->frames) {
- ogpd_frames.emplace_back(layer_id, frm->framenum);
+ if (ngpd.frames_size == ogpd->totframe) {
+ // get plain list of frames
+ std::vector<std::pair<int, int>> ogpd_frames;
+ int layer_id{0};
+ LISTBASE_FOREACH (bGPDlayer *, lay, &ogpd->layers) {
+ LISTBASE_FOREACH (bGPDframe *, frm, &lay->frames) {
+ ogpd_frames.emplace_back(layer_id, frm->framenum);
+ }
+ ++layer_id;
}
- ++layer_id;
- }
- for (int i = 0; i < ngpd.frames_size; i++) {
- const ::GPFrame *nfrm = ngpd.frames_array + i;
- int ofrm_layer_index{ogpd_frames[i].first};
- int ofrm_frame_number{ogpd_frames[i].second};
+ for (int i = 0; i < ngpd.frames_size; i++) {
+ const ::GPFrame *nfrm = ngpd.frames_array + i;
+ int ofrm_layer_index{ogpd_frames[i].first};
+ int ofrm_frame_number{ogpd_frames[i].second};
- EXPECT_EQ(nfrm->layer_index, ofrm_layer_index);
- EXPECT_EQ(nfrm->start_time, ofrm_frame_number);
+ EXPECT_EQ(nfrm->layer_index, ofrm_layer_index);
+ EXPECT_EQ(nfrm->start_time, ofrm_frame_number);
+ }
}
}
More information about the Bf-blender-cvs
mailing list