diff --git a/lua/lua.c b/lua/lua.c index 04b3a43..62ef005 100644 --- a/lua/lua.c +++ b/lua/lua.c @@ -313,7 +313,8 @@ static char *readline(const char *_pcPrompt, char *_pcBuffer, int _iSize, int _i } linebuffer[len] = '\0'; - char *result = strdup(linebuffer); + char *result = (char *)RD_MALLOC(strlen(linebuffer) + 1); + if (result) strcpy(result, linebuffer); if (len > 0 && strcmp(linebuffer, "exit") != 0) { @@ -529,7 +530,7 @@ int lua_repl(char *_pcBuffer, int _iSize, int _iEcho) } else { - RD_FREE(buffer); + if (buffer) RD_FREE(buffer); buffer = line; buffer_len = strlen(line); } @@ -672,7 +673,7 @@ cleanup: RD_FREE(wrapped_code); wrapped_code = NULL; } - RD_FREE(buffer); + if (buffer) RD_FREE(buffer); buffer = NULL; lua_close(L); L = NULL;