1
0
Fork 0
forked from len0rd/rockbox

lua latebound function update

return the nextfunction and nil instead of pairs it allows a faster
return to lua rather than calling the lua function
pcall(fnpairs) from c and returning the result back
into lua to kick off the search
yeah, no clue why I didn't realize that before..

testing in x86 and ARM..
its more RAM efficient to do the initial creation
of the stack in lua code for the __pairs functon
its not faster but being that its a one time hit per
iter creation the reduced churn alone should be worth it
along with a reduced peak RAM usage

fix bug where a failed module can not be reloaded

optimize filetol

fix potential bug in splash scroller when no break character is found
Change-Id: I42c922e07039a19138b97c0d0e80cf3cf2426471
This commit is contained in:
William Wilgus 2021-05-11 21:35:41 -04:00 committed by William Wilgus
parent 0c62177575
commit dcff9b85a3
4 changed files with 51 additions and 29 deletions

View file

@ -106,7 +106,8 @@ int splash_scroller(int timeout, const char* str)
{
brk = strpbrk_n(ch+1, max_ch, break_chars);
chars_next_break = (brk - ch);
if (chars_next_break < 2 || w + (ch_w * chars_next_break) > max_w)
if (brk &&
(chars_next_break < 2 || w + (ch_w * chars_next_break) > max_w))
{
if (!isprint(line[linepos]))
{
@ -226,7 +227,7 @@ int get_current_path(lua_State *L, int level)
}
}
lua_pushnil(L);
lua_pushnil(L);
return 1;
}
@ -250,25 +251,32 @@ int filetol(int fd, long *num)
while (rb->read(fd, &chbuf, 1) == 1)
{
if(!isspace(chbuf) || retn == 1)
if(retn || !isspace(chbuf))
{
if(chbuf == '0') /* strip preceeding zeros */
switch(chbuf)
{
*num = 0;
retn = 1;
}
else if(chbuf == '-' && retn != 1)
neg = true;
else
{
rb->lseek(fd, -1, SEEK_CUR);
break;
case '-':
{
if (retn) /* 0 preceeds, this negative sign must be in error */
goto get_digits;
neg = true;
continue;
}
case '0': /* strip preceeding zeros */
{
*num = 0;
retn = 1;
continue;
}
default:
goto get_digits;
}
}
}
while (rb->read(fd, &chbuf, 1) == 1)
{
get_digits:
if(!isdigit(chbuf))
{
rb->lseek(fd, -1, SEEK_CUR);