backlog: simplify code. Closes CID1407754

This commit is contained in:
Boris Faure 2019-11-24 19:50:08 +01:00
parent e16505f5f7
commit 787e16f215
Signed by untrusted user who does not match committer: borisfaure
GPG Key ID: EAA9CD729F522998
1 changed files with 20 additions and 25 deletions

View File

@ -181,6 +181,7 @@ void
termpty_backlog_size_set(Termpty *ty, size_t size)
{
Termsave *new_back;
size_t i;
if (ty->backsize == size)
return;
@ -192,34 +193,28 @@ termpty_backlog_size_set(Termpty *ty, size_t size)
termpty_backlog_free(ty);
goto end;
}
if (size > 0)
if (size > ty->backsize)
{
size_t i;
if (size > ty->backsize)
{
new_back = realloc(ty->back, sizeof(Termsave) * size);
if (!new_back)
return;
memset(new_back + ty->backsize, 0,
sizeof(Termsave) * (size - ty->backsize));
ty->back = new_back;
}
else
{
new_back = calloc(1, sizeof(Termsave) * size);
if (!new_back)
return;
for (i = 0; i < size; i++)
new_back[i] = ty->back[i];
for (i = size; i < ty->backsize; i++)
termpty_save_free(ty, &ty->back[i]);
free(ty->back);
ty->back = new_back;
}
_accounting_change(sizeof(Termsave) * (size - ty->backsize));
new_back = realloc(ty->back, sizeof(Termsave) * size);
if (!new_back)
return;
memset(new_back + ty->backsize, 0,
sizeof(Termsave) * (size - ty->backsize));
ty->back = new_back;
}
else
ty->back = NULL;
{
new_back = calloc(1, sizeof(Termsave) * size);
if (!new_back)
return;
for (i = 0; i < size; i++)
new_back[i] = ty->back[i];
for (i = size; i < ty->backsize; i++)
termpty_save_free(ty, &ty->back[i]);
free(ty->back);
ty->back = new_back;
}
_accounting_change(sizeof(Termsave) * (size - ty->backsize));
end:
ty->backpos = 0;
ty->backsize = size;