diff options
| author | Alexey Melnichuk <alexeymelnichuck@gmail.com> | 2018-09-05 07:59:44 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-09-05 07:59:44 +0300 |
| commit | 53adf5621d285952d6f56be889262127741c26cb (patch) | |
| tree | 1d626db1933134cc1f127d526ad5cdb30a9775b0 | |
| parent | 00ca97711b657c7d395d91212364a82dac1d4625 (diff) | |
| parent | d534bfc9586c1260d3255f949b7aa6f48511af3a (diff) | |
| download | lua-llthreads2-53adf5621d285952d6f56be889262127741c26cb.tar.gz lua-llthreads2-53adf5621d285952d6f56be889262127741c26cb.tar.bz2 lua-llthreads2-53adf5621d285952d6f56be889262127741c26cb.zip | |
Merge pull request #17 from osch/master
avoid NULL as parameter to fputs()
| -rw-r--r-- | .travis.yml | 1 | ||||
| -rw-r--r-- | appveyor.yml | 1 | ||||
| -rw-r--r-- | lakefile | 1 | ||||
| -rw-r--r-- | src/llthread.c | 2 | ||||
| -rw-r--r-- | test/test_error.lua | 41 |
5 files changed, 46 insertions, 0 deletions
diff --git a/.travis.yml b/.travis.yml index 19f6f5b..1f52bf6 100644 --- a/.travis.yml +++ b/.travis.yml | |||
| @@ -58,6 +58,7 @@ script: | |||
| 58 | - lua test_threads_attr.lua | 58 | - lua test_threads_attr.lua |
| 59 | - lua test_integer.lua | 59 | - lua test_integer.lua |
| 60 | - lua test_interrupt.lua | 60 | - lua test_interrupt.lua |
| 61 | - lua test_error.lua | ||
| 61 | # - lua test_register_llthreads.lua | 62 | # - lua test_register_llthreads.lua |
| 62 | 63 | ||
| 63 | notifications: | 64 | notifications: |
diff --git a/appveyor.yml b/appveyor.yml index 46a3235..b405930 100644 --- a/appveyor.yml +++ b/appveyor.yml | |||
| @@ -73,6 +73,7 @@ test_script: | |||
| 73 | - lua test_threads_attr.lua | 73 | - lua test_threads_attr.lua |
| 74 | - lua test_integer.lua | 74 | - lua test_integer.lua |
| 75 | - lua test_interrupt.lua | 75 | - lua test_interrupt.lua |
| 76 | - lua test_error.lua | ||
| 76 | # - lua test_register_llthreads.lua | 77 | # - lua test_register_llthreads.lua |
| 77 | 78 | ||
| 78 | after_test: | 79 | after_test: |
| @@ -45,6 +45,7 @@ target('test', install, function() | |||
| 45 | run_test('test_threads_ex_opt_2.lua') | 45 | run_test('test_threads_ex_opt_2.lua') |
| 46 | run_test('test_threads_attr.lua') | 46 | run_test('test_threads_attr.lua') |
| 47 | run_test('test_interrupt.lua') | 47 | run_test('test_interrupt.lua') |
| 48 | run_test('test_error.lua') | ||
| 48 | 49 | ||
| 49 | 50 | ||
| 50 | if not test_summary() then | 51 | if not test_summary() then |
diff --git a/src/llthread.c b/src/llthread.c index 66efe7c..a3b3216 100644 --- a/src/llthread.c +++ b/src/llthread.c | |||
| @@ -132,6 +132,8 @@ static int fail(lua_State *L, const char *msg){ | |||
| 132 | void llthread_log(lua_State *L, const char *hdr, const char *msg){ | 132 | void llthread_log(lua_State *L, const char *hdr, const char *msg){ |
| 133 | int top = lua_gettop(L); | 133 | int top = lua_gettop(L); |
| 134 | lua_rawgetp(L, LUA_REGISTRYINDEX, LLTHREAD_LOGGER_HOLDER); | 134 | lua_rawgetp(L, LUA_REGISTRYINDEX, LLTHREAD_LOGGER_HOLDER); |
| 135 | if (!msg) | ||
| 136 | msg = "(no error message)"; | ||
| 135 | if(lua_isnil(L, -1)){ | 137 | if(lua_isnil(L, -1)){ |
| 136 | lua_pop(L, 1); | 138 | lua_pop(L, 1); |
| 137 | fputs(hdr, stderr); | 139 | fputs(hdr, stderr); |
diff --git a/test/test_error.lua b/test/test_error.lua new file mode 100644 index 0000000..341105e --- /dev/null +++ b/test/test_error.lua | |||
| @@ -0,0 +1,41 @@ | |||
| 1 | local llthreads = require"llthreads" | ||
| 2 | local utils = require "utils" | ||
| 3 | |||
| 4 | local include = utils.thread_init .. [[ | ||
| 5 | local llthreads = require"llthreads" | ||
| 6 | ]] | ||
| 7 | |||
| 8 | do | ||
| 9 | local thread = llthreads.new(include .. [[ | ||
| 10 | error({}) | ||
| 11 | ]]) | ||
| 12 | |||
| 13 | thread:start() | ||
| 14 | local ok, err = thread:join() | ||
| 15 | print(ok, err) | ||
| 16 | assert(not ok) | ||
| 17 | end | ||
| 18 | do | ||
| 19 | local thread = llthreads.new(include .. [[ | ||
| 20 | llthreads.set_logger(function(msg) print("XXX", msg) end) | ||
| 21 | error({}) | ||
| 22 | ]]) | ||
| 23 | |||
| 24 | thread:start() | ||
| 25 | local ok, err = thread:join() | ||
| 26 | print(ok, err) | ||
| 27 | assert(not ok) | ||
| 28 | end | ||
| 29 | do | ||
| 30 | local thread = llthreads.new(include .. [[ | ||
| 31 | llthreads.set_logger(function(msg) end) | ||
| 32 | error({}) | ||
| 33 | ]]) | ||
| 34 | |||
| 35 | thread:start() | ||
| 36 | local ok, err = thread:join() | ||
| 37 | print(ok, err) | ||
| 38 | assert(not ok) | ||
| 39 | end | ||
| 40 | print("Done!") | ||
| 41 | |||
