Slow bounging logo.
[bertos.git] / bertos / mware / formatwr.c
index 5b2323d84a87eb432869fa0c48272099ebb799d9..7293c4dc7a0b4f624314b83a2de072f0f02ee97b 100644 (file)
        /* Maximum precision for floating point values */
        typedef long double max_float_t;
 
-       #warning FIXME: be sure to fix buffer size below
        #if CONFIG_FRMWRI_BUFSIZE
                #define FRMWRI_BUFSIZE CONFIG_FRMWRI_BUFSIZE
        #else
                 * space for: sign + all 38 digits + '.' + 6 decimal digits (default)
                 * Use a high value to avoid unexpected buffer overflows.
                 */
-               #define FRMWRI_BUFSIZE 100
+               #define FRMWRI_BUFSIZE 134
        #endif
 #else
        #if CONFIG_FRMWRI_BUFSIZE
@@ -506,14 +505,21 @@ NEXT_FLAG:
                {
                        case 'l':
                        case 'L':
+               #if SIZEOF_SIZE_T == SIZEOF_LONG
                        case 'z':
                                flags.l_L_modifier = true;
+               #elif SIZEOF_SIZE_T == SIZEOF_INT
+                               flags.l_L_modifier = true;
+                       case 'z':
+               #endif
                                format++;
                                break;
+
                        case 'h':
                                flags.h_modifier = true;
                                format++;
                                break;
+
                }
 
                /*
@@ -854,10 +860,13 @@ FLOATING_CONVERSION:
                switch (PGM_READ_CHAR(format))
                {
                        case 'l':
+               #if SIZEOF_SIZE_T == SIZEOF_LONG
                        case 'z':
-                               /* for the 'z' modifier, we make this assumption */
-                               STATIC_ASSERT(sizeof(size_t) == sizeof(long));
                                l_modifier = true;
+               #elif SIZEOF_SIZE_T == SIZEOF_INT
+                               l_modifier = true;
+                       case 'z':
+               #endif
                                format++;
                                break;