eval: Fix coverity false positive.

** CID 74786:  Resource leak  (RESOURCE_LEAK)
/src/nvim/eval.c: 10614 in f_jobsend()
/src/nvim/eval.c: 10616 in f_jobsend()

save_tv_as_string() should return NULL and input_len <= 0 for an empty
string or error. Callers should check that input != NULL instead of
input_len > 0 and assert(input == NULL) when the length must be checked.
This commit is contained in:
Scott Prager 2014-11-27 15:09:03 -05:00
parent 98b11f5db3
commit 927c6a148d

View File

@ -10631,10 +10631,10 @@ static void f_jobsend(typval_T *argvars, typval_T *rettv)
ssize_t input_len; ssize_t input_len;
char *input = (char *) save_tv_as_string(&argvars[1], &input_len, true); char *input = (char *) save_tv_as_string(&argvars[1], &input_len, true);
if (input_len < 0) { if (!input) {
return; // Error handled by save_tv_as_string(). // Either the error has been handled by save_tv_as_string(), or there is no
} else if (input_len == 0) { // input to send.
return; // Not an error, but nothing to do. return;
} }
WBuffer *buf = wstream_new_buffer(input, input_len, 1, free); WBuffer *buf = wstream_new_buffer(input, input_len, 1, free);
@ -14559,7 +14559,8 @@ static void get_system_output_as_rettv(typval_T *argvars, typval_T *rettv,
// get input to the shell command (if any), and its length // get input to the shell command (if any), and its length
ssize_t input_len; ssize_t input_len;
char *input = (char *) save_tv_as_string(&argvars[1], &input_len, false); char *input = (char *) save_tv_as_string(&argvars[1], &input_len, false);
if (input_len == -1) { if (input_len < 0) {
assert(input == NULL);
return; return;
} }