xplist: Better size estimation for PLIST_REAL nodes
diff --git a/src/xplist.c b/src/xplist.c
index 263d88e..2eaba55 100644
--- a/src/xplist.c
+++ b/src/xplist.c
@@ -113,7 +113,7 @@
     } else {
         size_t i = 0;
         len = snprintf(buf, bufsize, "%.*g", 17, realval);
-        for (i = 0; i < len; i++) {
+        for (i = 0; buf && i < len; i++) {
             if (buf[i] == ',') {
                 buf[i] = '.';
                 break;
@@ -479,7 +479,7 @@
             *size += (XPLIST_INT_LEN << 1) + 6;
             break;
         case PLIST_REAL:
-            *size += num_digits_i((int64_t)data->realval) + 7;
+            *size += dtostr(NULL, 0, data->realval);
             *size += (XPLIST_REAL_LEN << 1) + 6;
             break;
         case PLIST_DATE: