From a96fde13622fe4408f5da452a4e9c7dfeea6415b Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Mon, 31 Aug 2009 14:24:48 -0500 Subject: Simplify overly complicated code --- src/simutil.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'src/simutil.c') diff --git a/src/simutil.c b/src/simutil.c index 9c8b44bf..a73f96b5 100644 --- a/src/simutil.c +++ b/src/simutil.c @@ -407,38 +407,38 @@ gboolean sim_adn_parse(const unsigned char *data, int length, { int number_len; int ton_npi; + const unsigned char *alpha; + int alpha_length; if (length < 14) return FALSE; - /* Alpha-Identifier field */ - if (identifier) { - if (length > 14) - *identifier = sim_string_to_utf8(data, length - 14); - else - *identifier = NULL; - } - data += length - 14; + alpha = data; + alpha_length = length - 14; + + data += alpha_length; number_len = *data++; ton_npi = *data++; - if (number_len > 11 || ton_npi == 0xff) { - if (identifier && *identifier) { - g_free(*identifier); - *identifier = NULL; - } - + if (number_len > 11 || ton_npi == 0xff) return FALSE; - } ph->type = ton_npi; /* BCD coded, however the TON/NPI is given by the first byte */ number_len -= 1; - extract_bcd_number(data, number_len, ph->number); + if (identifier == NULL) + return TRUE; + + /* Alpha-Identifier field */ + if (alpha_length > 0) + *identifier = sim_string_to_utf8(alpha, alpha_length); + else + *identifier = NULL; + return TRUE; } -- cgit v1.2.3