sid_arrSize = lr_paramarr_len("sid_list");
//lr_error_message( "the sid_arrSize is #%d", sid_arrSize );
srand(time(NULL));
//要+1因为lr_paramarr_idx从1开始
iRand = rand()%sid_arrSize + 1;
odds = lr_paramarr_idx("odds_list", iRand);
outcomeId = lr_paramarr_idx("outcomeId_list", iRand);
sid = lr_paramarr_idx("sid_list", iRand);
memset(dest_sid,0,sizeof(dest_sid));
//if (strlen(sid) - strlen(outcomeId) ) {
//}
dest_sid_len = strlen(sid) - strlen(outcomeId);
if (dest_sid_len > 0) {
strncpy(dest_sid, sid, dest_sid_len );
dest_sid[dest_sid_len+1] = '\0';
}else{
lr_error_message("sid:%s,outcomeId:%s",sid,outcomeId);
lr_exit(LR_EXIT_ITERATION_AND_CONTINUE, LR_FAIL);
}
原来的代码为:iRand = rand()%sid_arrSize;没有加1,导致随机到0的时候,取不到值,最后导致strncpy直接报错!!!
后面足足排查5个小时,才看出问题。