diff options
author | keis <keijser@gmail.com> | 2011-09-11 14:27:21 +0200 |
---|---|---|
committer | keis <keijser@gmail.com> | 2011-09-11 14:41:42 +0200 |
commit | 7c35456ff3930f0484b79aaf1c43cb4fa9bfc707 (patch) | |
tree | 1e7dc0ed05e279fe1bc2cc99084610a511ed8a88 /src | |
parent | 0ddedde7e75bdaa514ccab8c7c2b6afe2acca2c9 (diff) |
format events in C locale
Diffstat (limited to 'src')
-rw-r--r-- | src/events.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/events.c b/src/events.c index 45140c0..20f4545 100644 --- a/src/events.c +++ b/src/events.c @@ -177,7 +177,17 @@ vsend_event(int type, const gchar *custom_event, va_list vargs) { break; case TYPE_FLOAT: // ‘float’ is promoted to ‘double’ when passed through ‘...’ - g_string_append_printf (event_message, "%.2f", va_arg (vargs, double)); + + // Make sure the formatted double fits in the buffer + if (event_message->allocated_len - event_message->len < G_ASCII_DTOSTR_BUF_SIZE) + g_string_set_size (event_message, event_message->len + G_ASCII_DTOSTR_BUF_SIZE); + + // format in C locale + char *tmp = g_ascii_formatd ( + event_message->str + event_message->len, + event_message->allocated_len - event_message->len, + "%.2f", va_arg (vargs, double)); + event_message->len += strlen(tmp); break; } } |