fix sem_close unmapping of still-referenced semaphore
[musl] / src / regex / regerror.c
index 17119ff..5b347cc 100644 (file)
@@ -1,6 +1,7 @@
 #include <string.h>
 #include <regex.h>
 #include <stdio.h>
+#include "locale_impl.h"
 
 /* Error message strings for error codes listed in `regex.h'.  This list
    needs to be in sync with the codes listed there, naturally. */
@@ -22,14 +23,15 @@ static const char messages[] = {
   "Invalid contents of {}\0"
   "Invalid character range\0"
   "Out of memory\0"
-  "XXX\0"
+  "Repetition not preceded by valid expression\0"
   "\0Unknown error"
 };
 
-size_t regerror(int e, const regex_t *preg, char *buf, size_t size)
+size_t regerror(int e, const regex_t *restrict preg, char *restrict buf, size_t size)
 {
        const char *s;
-       for (s=messages; e && *s; e--, e+=strlen(s)+1);
+       for (s=messages; e && *s; e--, s+=strlen(s)+1);
        if (!*s) s++;
+       s = LCTRANS_CUR(s);
        return 1+snprintf(buf, size, "%s", s);
 }