慎用入参

函数功能:区号比较

入参说明:

               exten:需要比较的区号,如028

               code:区号字符串,如0731,0732,021,010,028,0838

 

心得:

     1. 不要修改入参的内容==》可以malloc内存,将内容复制到新的内存,注意释放内存;

     2. malloc的内存,千万不要使用'/0',否则会造成内存释放不完全,即内存泄露。

 

错误代码:

static int avx_res_cmpAreaCode(char *exten, char *code)
{
        char *p, *q;
        int i;

        p = (char*)malloc(strlen(code) +1);
        if (!p) {
                ast_log(LOG_WARNING, "mallor error!/n");
                return -1;
        }
        strcpy(p, code);

   while (p)
    {
        q = p;
        p = strstr(p,",");
        if (p)
        {
                *p = '/0';
                p ++;
        }

        if(!(i=strncmp(exten,q,strlen(q))))
           break;
    }

        if (p)
                free(p);

        return i;
}

 

修正代码:

tatic int avx_res_cmpAreaCode(char *exten, char *code)
{
        char *prev, *tail;
        char tmp[10];
        int i;
        int ret =-1;

        tail = code;
        while (tail)
        {
                prev = tail;
        
                tail = strstr(tail,",");
        
                for (i=0; prev != tail && *prev != '/0'; prev++,i++)
                        tmp[i] = *prev;
                tmp[i] = '/0';
     
                if (tail)
                        tail++;
   
                if(!(ret=strncmp(exten,tmp,i)))
                   break;
        }

        return ret;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值