diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/shell.c.in | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/shell.c.in b/src/shell.c.in index 64af946b7..5ebb6baec 100644 --- a/src/shell.c.in +++ b/src/shell.c.in @@ -11264,20 +11264,25 @@ int SQLITE_CDECL wmain(int argc, wchar_t **wargv){ for(i=0; i<nCmd; i++){ if( azCmd[i][0]=='.' ){ rc = do_meta_command(azCmd[i], &data); - if( rc ) return rc==2 ? 0 : rc; + if( rc ){ + free(azCmd); + return rc==2 ? 0 : rc; + } }else{ open_db(&data, 0); rc = shell_exec(&data, azCmd[i], &zErrMsg); - if( zErrMsg!=0 ){ - utf8_printf(stderr,"Error: %s\n", zErrMsg); + if( zErrMsg || rc ){ + if( zErrMsg!=0 ){ + utf8_printf(stderr,"Error: %s\n", zErrMsg); + }else{ + utf8_printf(stderr,"Error: unable to process SQL: %s\n", azCmd[i]); + } + sqlite3_free(zErrMsg); + free(azCmd); return rc!=0 ? rc : 1; - }else if( rc!=0 ){ - utf8_printf(stderr,"Error: unable to process SQL: %s\n", azCmd[i]); - return rc; } } } - free(azCmd); }else{ /* Run commands received from standard input */ @@ -11323,6 +11328,7 @@ int SQLITE_CDECL wmain(int argc, wchar_t **wargv){ rc = process_input(&data); } } + free(azCmd); set_table_name(&data, 0); if( data.db ){ session_close_all(&data); |