2、在函数中保证指针被赋值,注意检查return的时候只返回变量pResult:
char* GetSourcePoint( )
{
char* pResult = NULL;
...
return pResult;
}
要注意不能图方便,return一个其它的变量,常量好一点,但是最好是这样:
pResult = NULL;
return pResult;
recordIndex的大小是固定的在这
recordIndex = (RECORD_INDEX *) malloc ((strlen
(table[iTableIMIndex].strInputCode) + 26) * sizeof (RECORD_INDEX));
如果加变量:
int g_recordIndexCount = strlen (table[iTableIMIndex].strInputCode) +
26;
那么下面的匹配程序可以改成这样:
Bool bFind = False;
for (i = 0; i < g_recordIndexCount ; i++)
{
if (!recordIndex[i].cCode) // 最好再检查一下cCode是不是unsigned char
break;
if (!recordIndex[i].record == NULL)
break;
if (strCodeInput[0] == recordIndex[i].cCode)
{
bFind = True;
break;
}
}
if (!bFind)
return -1;
......
在这段程序中使用了隐含规则,就是recordIndex的最后一个记录的record或者cCode等于0,也就是说最后一条记录有双重身份。
recordIndex的赋值,隔的很远,可能后来修改的时候,忘了这条隐含规则。
最好能让 cjacker 加入这个邮件列表,在论坛上贴 patch 可不太好。
lee
这不正好嘛。
lee