diff --git a/pjsip-apps/src/pjsua/pjsua_app_cli.c b/pjsip-apps/src/pjsua/pjsua_app_cli.c index 0cc9b0150..85a251dd6 100644 --- a/pjsip-apps/src/pjsua/pjsua_app_cli.c +++ b/pjsip-apps/src/pjsua/pjsua_app_cli.c @@ -819,7 +819,7 @@ static pj_status_t cmd_del_account(pj_cli_cmd_val *cval) char out_str[64]; unsigned str_len; - int i = my_atoi(cval->argv[1].ptr); + int i = my_atoi2(&cval->argv[1]); if (!pjsua_acc_is_valid(i)) { pj_ansi_snprintf(out_str, sizeof(out_str), @@ -860,7 +860,7 @@ static pj_status_t cmd_unreg_account() /* Select account to be used for sending outgoing request */ static pj_status_t cmd_next_account(pj_cli_cmd_val *cval) { - int i = my_atoi(cval->argv[1].ptr); + int i = my_atoi2(&cval->argv[1]); if (pjsua_acc_is_valid(i)) { pjsua_acc_set_default(i); PJ_LOG(3,(THIS_FILE, "Current account changed to %d", i)); @@ -988,7 +988,7 @@ static pj_status_t cmd_add_buddy(pj_cli_cmd_val *cval) /* Delete buddy */ static pj_status_t cmd_del_buddy(pj_cli_cmd_val *cval) { - int i = my_atoi(cval->argv[1].ptr) - 1; + int i = my_atoi2(&cval->argv[1]) - 1; char out_str[80]; if (!pjsua_buddy_is_valid(i)) { @@ -1798,8 +1798,6 @@ static pj_status_t cmd_transfer_replace_call(pj_cli_cmd_val *cval) pj_str_t STR_FALSE = { "false", 5 }; pjsua_call_id ids[PJSUA_MAX_CALLS]; pjsua_msg_data msg_data_; - char buf[8] = {0}; - pj_str_t tmp = pj_str(buf); unsigned count; static const pj_str_t err_invalid_num = {"Invalid destination call number\n", 32 }; @@ -1815,8 +1813,7 @@ static pj_status_t cmd_transfer_replace_call(pj_cli_cmd_val *cval) return PJ_SUCCESS; } - pj_strncpy_with_null(&tmp, &cval->argv[1], sizeof(buf)); - dst_call = my_atoi(tmp.ptr); + dst_call = my_atoi2(&cval->argv[1]); /* Check if call is still there. */ if (call != current_call) { diff --git a/pjsip-apps/src/pjsua/pjsua_app_common.c b/pjsip-apps/src/pjsua/pjsua_app_common.c index 3db1b9420..6b0d9ebd6 100644 --- a/pjsip-apps/src/pjsua/pjsua_app_common.c +++ b/pjsip-apps/src/pjsua/pjsua_app_common.c @@ -45,8 +45,15 @@ pjsua_msg_data msg_data; int my_atoi(const char *cs) { pj_str_t s; - pj_cstr(&s, cs); + return my_atoi2(&s); +} + +int my_atoi2(const pj_str_t *str) +{ + const char *cs = str->ptr; + pj_str_t s = *str; + if (cs[0] == '-') { s.ptr++; s.slen--; return 0 - (int)pj_strtoul(&s); diff --git a/pjsip-apps/src/pjsua/pjsua_app_common.h b/pjsip-apps/src/pjsua/pjsua_app_common.h index 3f87102d3..0fa8e032f 100644 --- a/pjsip-apps/src/pjsua/pjsua_app_common.h +++ b/pjsip-apps/src/pjsua/pjsua_app_common.h @@ -169,6 +169,7 @@ extern pjsua_msg_data msg_data; extern pj_bool_t app_running; int my_atoi(const char *cs); +int my_atoi2(const pj_str_t *s); pj_bool_t find_next_call(void); pj_bool_t find_prev_call(void); void send_request(char *cstr_method, const pj_str_t *dst_uri);