Fix segfault in mail folder (SF: 3007493)
[monky] / src / timeinfo.c
index 9e5288b..0513e9b 100644 (file)
@@ -10,7 +10,7 @@
  * Please see COPYING for details
  *
  * Copyright (c) 2004, Hannu Saransaari and Lauri Hakkarainen
- * Copyright (c) 2005-2009 Brenden Matthews, Philip Kovacs, et. al.
+ * Copyright (c) 2005-2010 Brenden Matthews, Philip Kovacs, et. al.
  *     (see AUTHORS)
  * All rights reserved.
  *
@@ -235,11 +235,14 @@ void print_format_time(struct text_object *obj, char *p, unsigned int p_max_size
                                                        if(*currentchar >= '0' && *currentchar <= '9') {
                                                                asprintf(&temp, "%.*f", (*currentchar) - '0', seconds);
                                                        } else if(*currentchar == 'x') {
-                                                               asprintf(&temp, "%.9f", seconds);
-                                                               while(*(temp + strlen(temp) - 1) == '0' || *(temp + strlen(temp) - 1) == '.') {
-                                                                       *(temp + strlen(temp) - 1) = 0;
+                                                               if(seconds == (int) seconds ) {
+                                                                       asprintf(&temp, "%d", (int) seconds);
+                                                               } else {
+                                                                       asprintf(&temp, "%.9f", seconds);
+                                                                       while(*(temp + strlen(temp) - 1) == '0' || *(temp + strlen(temp) - 1) == '.') {
+                                                                               *(temp + strlen(temp) - 1) = 0;
+                                                                       }
                                                                }
-                                                               if(*temp == 0) *temp = '0';
                                                        }else{
                                                                currentchar--;
                                                                NORM_ERR("$format_time needs a digit behind 'S' to specify precision")