diff --git a/src/emitter.c b/src/emitter.c index 7b11fdc..fed51a2 100644 --- a/src/emitter.c +++ b/src/emitter.c @@ -101,7 +101,7 @@ static kdl_owned_string _float_to_string(double f, kdl_float_printing_options co bool negative = f < 0.0; f = fabs(f); - int exponent = (int)floor(log10(f)); + int exponent = f != 0.0 ? (int)floor(log10(f)) : 0; double exp_factor = 1.0; if (abs(exponent) < opts->min_exponent) { // don't use scientific notation diff --git a/src/tokenizer.c b/src/tokenizer.c index b1df34f..10c57a6 100644 --- a/src/tokenizer.c +++ b/src/tokenizer.c @@ -96,7 +96,9 @@ static size_t _refill_tokenizer(kdl_tokenizer* self) self->document.len = 0; } // Move whatever data is left unparsed to the top of the buffer - memmove(self->buffer, self->document.data, self->document.len); + if (self->document.len > 0) { + memmove(self->buffer, self->document.data, self->document.len); + } self->document.data = self->buffer; size_t len_available = self->buffer_size - self->document.len; if (len_available < MIN_BUFFER_SIZE) {