diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2017-03-24 15:16:00 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2017-03-24 15:31:26 -0400 |
commit | f28eb902df59472c50af95bde64296b9ba861735 (patch) | |
tree | 81095dd39c9d4523bd47d14a7b40f4877d212a8b /src/command.c | |
parent | 9702d522a46500bdfbfd58d4fa28e4eb6ec6f5b7 (diff) | |
download | kutter-f28eb902df59472c50af95bde64296b9ba861735.tar.gz kutter-f28eb902df59472c50af95bde64296b9ba861735.tar.xz kutter-f28eb902df59472c50af95bde64296b9ba861735.zip |
command: Fix encoding of 16bit signed integers
The code wasn't properly sign-extending 16bit integers which caused
int16_t reports in output() to appear as uint16_t.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'src/command.c')
-rw-r--r-- | src/command.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/command.c b/src/command.c index 2d00aaf4..a1ea4a7c 100644 --- a/src/command.c +++ b/src/command.c @@ -139,15 +139,17 @@ _sendf(uint8_t parserid, ...) param_types++; uint32_t v; switch (t) { - case PT_uint32: - case PT_int32: + case PT_byte: case PT_uint16: + v = va_arg(args, unsigned int); + goto encode_int; case PT_int16: - case PT_byte: - if (t >= PT_uint16) - v = va_arg(args, int) & 0xffff; - else - v = va_arg(args, uint32_t); + v = (int32_t)va_arg(args, int); + goto encode_int; + case PT_uint32: + case PT_int32: + v = va_arg(args, uint32_t); + encode_int: p = encode_int(p, v); break; case PT_string: { |