diff --git a/sflphone-client-gnome/src/callable_obj.c b/sflphone-client-gnome/src/callable_obj.c index 676ba0676eb71f42b6b615c1b69724a6f4c32ebe..09a83d4776041e906896812878d3fe04034427fc 100644 --- a/sflphone-client-gnome/src/callable_obj.c +++ b/sflphone-client-gnome/src/callable_obj.c @@ -172,40 +172,46 @@ void create_history_entry_from_serialized_form (gchar *timestamp, gchar *details gchar *peer_number="", *accountID="", *time_stop=""; callable_obj_t *new_call; history_state_t history_state = MISSED; - char *ptr; + char **ptr; const char *delim="|"; int token=0; // details is in serialized form, i e: calltype%to%from%callid - if ((ptr = g_strsplit(details, delim,0)) != NULL) { - do { + if ((ptr = g_strsplit(details, delim,5)) != NULL) { + + while (ptr != NULL && token < 5) { + switch (token) { case 0: - history_state = get_history_state_from_id (ptr); + history_state = get_history_state_from_id (*ptr); break; - case 1: - peer_number = ptr; + case 1: + peer_number = *ptr; break; case 2: - peer_name = ptr; + peer_name = *ptr; break; case 3: - time_stop = ptr; + time_stop = *ptr; break; case 4: - accountID = ptr; + accountID = *ptr; break; default: break; } - token ++; - } while ((ptr = g_strsplit(NULL, delim, 0)) != NULL); + + token++; + ptr++; + + } } if (g_strcasecmp (peer_name, "empty") == 0) peer_name=""; + create_new_call (HISTORY_ENTRY, CALL_STATE_DIALING, "", accountID, peer_name, peer_number, &new_call); new_call->_history_state = history_state; new_call->_time_start = convert_gchar_to_timestamp (timestamp); @@ -306,14 +312,14 @@ gchar* serialize_history_entry (callable_obj_t *entry) history_state = get_history_id_from_state (entry->_history_state); // and the timestamps timestamp = convert_timestamp_to_gchar (entry->_time_stop); - + result = g_strconcat (history_state, separator, entry->_peer_number, separator, g_strcasecmp (entry->_peer_name,"") ==0 ? "empty": entry->_peer_name, separator, timestamp, separator, g_strcasecmp (entry->_accountID,"") ==0 ? "empty": entry->_accountID, NULL); - + return result; }