2017-04-12 57 views
0

所以我使用jansson庫,我想設置一個值: json_object_set_new(event,「error_code」,json_integer(response-> error_code));C - 複製整數

問題是,我需要freeresponse結構,但仍然使用我在json_object_set_new中設置的值。

我應該從response->error_code複製價值,我該怎麼做?

一些背景:

plugin_response: { 
    if(!response->message && response->error_code == 0) { 
      response->error_code = JANUS_AUDIOBRIDGE_ERROR_UNKNOWN_ERROR; 
     if(response->error_cause == NULL) { 
       response->error_cause = g_strdup_printf("%s", "Invalid response"); 
     } 
    } 

     json_t *event = json_object(); 
     if(!response->message && response->error_code != 0) { 
      /* Prepare JSON error event */ 
      json_object_set_new(event, "audiobridge", json_string("event")); 
      json_object_set_new(event, "error_code", json_integer(response->error_code)); 
      json_object_set_new(event, "error", json_string(response->error_cause)); 
     } else { 
      event = json_deep_copy(response->message); 
    } 

     if(root != NULL) 
      json_decref(root); 
     if(jsep != NULL) 
      json_decref(jsep); 
     g_free(transaction); 
     g_free(response); 



return janus_plugin_result_new(JANUS_PLUGIN_OK, NULL, event); 
} 

編輯:我也使用GLib的,所以如果有此一記漂亮的方法,我洗耳恭聽。

回答

0

Okey,我讀了這個This article,我明白了。我不需要複製我傳遞給json_integer()的整數,因爲它不是一個指針,並且與struct整數完全隔離。