Replace VLA with a vector and also fix invalid dangling pointer warnings
This commit is contained in:
+4
-8
@@ -483,11 +483,7 @@ void reconstruct_stripes_ec(osd_rmw_stripe_t *stripes, int pg_size, int pg_minsi
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int *decoding_matrix = dm_ids + pg_minsize;
|
int *decoding_matrix = dm_ids + pg_minsize;
|
||||||
char *data_ptrs[pg_size];
|
std::vector<char*> data_ptrs(pg_size);
|
||||||
for (int role = 0; role < pg_size; role++)
|
|
||||||
{
|
|
||||||
data_ptrs[role] = NULL;
|
|
||||||
}
|
|
||||||
bool recovered = false;
|
bool recovered = false;
|
||||||
for (int role = 0; role < pg_minsize; role++)
|
for (int role = 0; role < pg_minsize; role++)
|
||||||
{
|
{
|
||||||
@@ -509,7 +505,7 @@ void reconstruct_stripes_ec(osd_rmw_stripe_t *stripes, int pg_size, int pg_minsi
|
|||||||
data_ptrs[role] = (char*)stripes[role].read_buf;
|
data_ptrs[role] = (char*)stripes[role].read_buf;
|
||||||
jerasure_matrix_dotprod(
|
jerasure_matrix_dotprod(
|
||||||
pg_minsize, OSD_JERASURE_W, decoding_matrix+(role*pg_minsize), dm_ids, role,
|
pg_minsize, OSD_JERASURE_W, decoding_matrix+(role*pg_minsize), dm_ids, role,
|
||||||
data_ptrs, data_ptrs+pg_minsize, stripes[role].read_end - stripes[role].read_start
|
&data_ptrs[0], &data_ptrs[pg_minsize], stripes[role].read_end - stripes[role].read_start
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -534,7 +530,7 @@ void reconstruct_stripes_ec(osd_rmw_stripe_t *stripes, int pg_size, int pg_minsi
|
|||||||
{
|
{
|
||||||
jerasure_matrix_dotprod(
|
jerasure_matrix_dotprod(
|
||||||
pg_minsize, OSD_JERASURE_W, decoding_matrix+(role*pg_minsize), dm_ids, role,
|
pg_minsize, OSD_JERASURE_W, decoding_matrix+(role*pg_minsize), dm_ids, role,
|
||||||
data_ptrs, data_ptrs+pg_minsize, bitmap_size
|
&data_ptrs[0], &data_ptrs[pg_minsize], bitmap_size
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -563,7 +559,7 @@ void reconstruct_stripes_ec(osd_rmw_stripe_t *stripes, int pg_size, int pg_minsi
|
|||||||
{
|
{
|
||||||
jerasure_matrix_dotprod(
|
jerasure_matrix_dotprod(
|
||||||
pg_minsize, OSD_JERASURE_W, decoding_matrix+(role*pg_minsize), dm_ids, role,
|
pg_minsize, OSD_JERASURE_W, decoding_matrix+(role*pg_minsize), dm_ids, role,
|
||||||
data_ptrs, data_ptrs+pg_minsize, bitmap_size
|
&data_ptrs[0], &data_ptrs[pg_minsize], bitmap_size
|
||||||
);
|
);
|
||||||
memcpy(stripes[role].bmp_buf, data_ptrs[role], bitmap_size);
|
memcpy(stripes[role].bmp_buf, data_ptrs[role], bitmap_size);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user