under 64-bit enviroment, when input an 64-bit pointer as arg1 to strptime, e.g, a char[] array, it will return a pointer with higher 4 bytes set to zero. for example: char timestr[655] = "2011-11-27T23:06:23qi/ning"; struct tm t; char * ret = strptime(timestr, "%FT%H:%M:%S", &t); printf("%llx %llx\n", ret, timestr); printf("%c\n", *ret);
Cannot replicate on x86-64. Test program returns: 7fffffffe633 7fffffffe620 q which has upper bytes nonzero.
Next time try compiling with -Werror=implicit-function-declaration. You may also want to file a bug report with GCC requesting that this be made default, since use of implicit function declarations is always an error and is a constraint violation.