Skip to content

Commit

Permalink
decoder-neg-int-fix
Browse files Browse the repository at this point in the history
  • Loading branch information
magjohansson committed Feb 16, 2017
1 parent f1a6e9e commit e16a274
Showing 1 changed file with 5 additions and 7 deletions.
12 changes: 5 additions & 7 deletions src/decoder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -252,26 +252,24 @@ void decoder::run() {
if(_in->has_bytes(_currentLength)) {
switch(_currentLength) {
case 1:
_listener->on_integer(-(int) _in->get_byte());
_listener->on_integer(-(int) _in->get_byte() - 1);
_state = STATE_TYPE;
break;
case 2:
_listener->on_integer(-(int) _in->get_short());
_listener->on_integer(-(int) _in->get_short() - 1);
_state = STATE_TYPE;
break;
case 4:
temp = _in->get_int();
if(temp <= INT_MAX) {
_listener->on_integer(-(int) temp);
} else if(temp == 2147483648u) {
_listener->on_integer(INT_MIN);
_listener->on_integer(-(int) temp - 1);
} else {
_listener->on_extra_integer(temp, -1);
_listener->on_extra_integer(temp + 1, -1);
}
_state = STATE_TYPE;
break;
case 8:
_listener->on_extra_integer(_in->get_long(), -1);
_listener->on_extra_integer(_in->get_long() + 1, -1);
break;
}
} else break;
Expand Down

0 comments on commit e16a274

Please sign in to comment.