summaryrefslogtreecommitdiff
path: root/ext/ereg/regex/regerror.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/ereg/regex/regerror.c')
-rw-r--r--ext/ereg/regex/regerror.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/ext/ereg/regex/regerror.c b/ext/ereg/regex/regerror.c
index 1c66d4114e..7bf741967d 100644
--- a/ext/ereg/regex/regerror.c
+++ b/ext/ereg/regex/regerror.c
@@ -82,10 +82,12 @@ size_t errbuf_size)
break;
if (errcode&REG_ITOA) {
- if (r->code >= 0)
- (void) strncpy(convbuf, r->name, 50);
- else
+ if (r->code >= 0) {
+ (void) strncpy(convbuf, r->name, sizeof(convbuf) - 1);
+ convbuf[sizeof(convbuf) - 1] = '\0';
+ } else {
snprintf(convbuf, sizeof(convbuf), "REG_0x%x", target);
+ }
assert(strlen(convbuf) < sizeof(convbuf));
s = convbuf;
} else