aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib_os.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lib_os.c b/src/lib_os.c
index 9e78d49a..ffbc3fdc 100644
--- a/src/lib_os.c
+++ b/src/lib_os.c
@@ -205,12 +205,12 @@ LJLIB_CF(os_date)
205 setboolfield(L, "isdst", stm->tm_isdst); 205 setboolfield(L, "isdst", stm->tm_isdst);
206 } else if (*s) { 206 } else if (*s) {
207 SBuf *sb = &G(L)->tmpbuf; 207 SBuf *sb = &G(L)->tmpbuf;
208 MSize sz = 0; 208 MSize sz = 0, retry = 4;
209 const char *q; 209 const char *q;
210 for (q = s; *q; q++) 210 for (q = s; *q; q++)
211 sz += (*q == '%') ? 30 : 1; /* Overflow doesn't matter. */ 211 sz += (*q == '%') ? 30 : 1; /* Overflow doesn't matter. */
212 setsbufL(sb, L); 212 setsbufL(sb, L);
213 for (;;) { 213 while (retry--) { /* Limit growth for invalid format or empty result. */
214 char *buf = lj_buf_need(sb, sz); 214 char *buf = lj_buf_need(sb, sz);
215 size_t len = strftime(buf, sbufsz(sb), s, stm); 215 size_t len = strftime(buf, sbufsz(sb), s, stm);
216 if (len) { 216 if (len) {