aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar keis <keijser@gmail.com>2011-09-11 14:27:21 +0200
committerGravatar keis <keijser@gmail.com>2011-09-11 14:41:42 +0200
commit7c35456ff3930f0484b79aaf1c43cb4fa9bfc707 (patch)
tree1e7dc0ed05e279fe1bc2cc99084610a511ed8a88 /src
parent0ddedde7e75bdaa514ccab8c7c2b6afe2acca2c9 (diff)
format events in C locale
Diffstat (limited to 'src')
-rw-r--r--src/events.c12
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;
}
}