sizeof 笔误
....
log_error ("#######Test Only - 02: login=%s, operator=%s", login_name, operator_name);
....
strncpy (operator_name,
login_name,
sizeof (operator_name - 1));
....
log_error ("#######Test Only - 03: login=%s, operator=%s", login_name, operator_name);
最终调试结果:
2010-05-28: 20:31:18 #######Test Only - 02: login=tando, operator=
2010-05-28: 20:31:18 #######Test Only - 03: login=tando, operator=tand
(两个字符数组变量定义都是正确的,长度为12)
最囧的是其他服务器上没有这个bug,只在某一台上出现而且是比较正式的综合服务器,调试相当的麻烦。
"sizeof (operator_name - 1)" 取到的是地址长度,查看了下服务器版本 -
Linux version 2.6.9-42.ELsmp, gcc version Red Hat Linux 3.4.6-2 (不出问题的server,64位),地址大小为8字节
Linux version 2.4.21-47.ELsmp, gcc version Red Hat 3.2.3-54 (出现问题的server,32位),地址大小4个字节
难道老外写代码不通过QA直接就deliver了.
这样的笔误耗去的是几天时间,有些失误可能一辈子也调试不出来。。。