Indeed, the new output is
illegal byte sequence
For the following program
#include <regex.h>
#include <assert.h>
#include <stddef.h>
#include <stdio.h>
#include <locale.h> int main(int argc, char **argv) {
char *loc = setlocale(LC_CTYPE, "");
assert (loc != NULL);
regex_t re;
int ret = regcomp(&re, "[\xc0-\xff][\x80-\xbf]+", REG_EXTENDED
| REG_NEWLINE);
/* assert(ret != 0); */
size_t errbuf_size = regerror(ret, &re, NULL, 0);
char errbuf[errbuf_size];
regerror(ret, &re, errbuf, errbuf_size);
printf("%s\n", errbuf);
}My own locale output, for completion's sake:
LANG="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_CTYPE="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_ALL="fr_FR.UTF-8"