Always throw out the whole screen array
If n < screens_len, screens_len did not get updated. So boundary checks wouldn't catch, if screens between n and screens_len are accessed. This will prevent such an error type in the future.
This commit is contained in:
parent
9bcb27f2e8
commit
121ddd2b94
@ -77,12 +77,8 @@ void init_screens(void)
|
|||||||
void alloc_screen_ar(int n)
|
void alloc_screen_ar(int n)
|
||||||
{
|
{
|
||||||
assert(n > 0);
|
assert(n > 0);
|
||||||
if (n <= screens_len) return;
|
g_free(screens);
|
||||||
|
screens = g_malloc0(n * sizeof(struct screen_info));
|
||||||
screens = g_realloc(screens, n * sizeof(struct screen_info));
|
|
||||||
|
|
||||||
memset(screens, 0, n * sizeof(struct screen_info));
|
|
||||||
|
|
||||||
screens_len = n;
|
screens_len = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user