All,
I'm running 5.99.7. The behavior of setlocale differs
between statically and dynamically linked libc. The
following C program illustrates the difference:
#include <locale.h>
#include <stdio.h>
int main()
{
char * l = setlocale (LC_ALL, NULL);
printf("%s\n", l);
return 0;
}
Yes, the pointer should be checked before being used. The
point here is that the behavior is different between
statically and dynamically linked programs.
C++ compunds the problem. For example, the following C++
program generates a segmentation fault:
#include <iostream>
int main()
{
float f;
std::cin >> f;
return 0;
}
Deep in the STL streams is a call to setlocale where the
returned value is assumed to be non-null.
It appears that the difference in behaviors is in
_find_category, but I have reached the end of my assembly
debugging skills. Any help is appreciated.
Aran
Attachment:
signature.asc
Description: This is a digitally signed message part.