diff options
author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2011-02-24 18:18:22 -0300 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@nokia.com> | 2011-02-24 18:35:17 -0300 |
commit | 448456a19f74226062b3157a203bfe25dbdfef90 (patch) | |
tree | 0815325519570c1da9c442f6149cbcc02a2edb46 /attrib/att.c | |
parent | 28d393d7a2c381132eff76771c6d740fcf05bbfc (diff) | |
download | bluez-448456a19f74226062b3157a203bfe25dbdfef90.tar.gz |
Coding standard change replacing malloc by glib functions
Use glib memory allocation functions instead of malloc for attribute
data list in ATT protocol utility functions.
Diffstat (limited to 'attrib/att.c')
-rw-r--r-- | attrib/att.c | 76 |
1 files changed, 45 insertions, 31 deletions
diff --git a/attrib/att.c b/attrib/att.c index 3259fca62..b96b97df9 100644 --- a/attrib/att.c +++ b/attrib/att.c @@ -80,13 +80,34 @@ const char *att_ecode2str(uint8_t status) void att_data_list_free(struct att_data_list *list) { + if (list == NULL) + return; + + if (list->data) { + int i; + for (i = 0; i < list->num; i++) + g_free(list->data[i]); + } + + g_free(list->data); + g_free(list); +} + +struct att_data_list *att_data_list_alloc(uint16_t num, uint16_t len) +{ + struct att_data_list *list; int i; - for (i = 0; i < list->num; i++) - free(list->data[i]); + list = g_new0(struct att_data_list, 1); + list->len = len; + list->num = num; - free(list->data); - free(list); + list->data = g_malloc0(sizeof(uint8_t *) * num); + + for (i = 0; i < num; i++) + list->data[i] = g_malloc0(sizeof(uint8_t) * len); + + return list; } uint16_t enc_read_by_grp_req(uint16_t start, uint16_t end, uuid_t *uuid, @@ -178,20 +199,19 @@ struct att_data_list *dec_read_by_grp_resp(const uint8_t *pdu, int len) { struct att_data_list *list; const uint8_t *ptr; + uint16_t elen, num; int i; if (pdu[0] != ATT_OP_READ_BY_GROUP_RESP) return NULL; - list = malloc(sizeof(struct att_data_list)); - list->len = pdu[1]; - list->num = (len - 2) / list->len; + elen = pdu[1]; + num = (len - 2) / elen; + list = att_data_list_alloc(num, elen); - list->data = malloc(sizeof(uint8_t *) * list->num); ptr = &pdu[2]; - for (i = 0; i < list->num; i++) { - list->data[i] = malloc(sizeof(uint8_t) * list->len); + for (i = 0; i < num; i++) { memcpy(list->data[i], ptr, list->len); ptr += list->len; } @@ -307,7 +327,7 @@ GSList *dec_find_by_type_resp(const uint8_t *pdu, int len) return NULL; for (offset = 1, matches = NULL; len >= (offset + 4); offset += 4) { - range = malloc(sizeof(struct att_range)); + range = g_new0(struct att_range, 1); range->start = att_get_u16(&pdu[offset]); range->end = att_get_u16(&pdu[offset + 2]); @@ -406,20 +426,19 @@ struct att_data_list *dec_read_by_type_resp(const uint8_t *pdu, int len) { struct att_data_list *list; const uint8_t *ptr; + uint16_t elen, num; int i; if (pdu[0] != ATT_OP_READ_BY_TYPE_RESP) return NULL; - list = malloc(sizeof(struct att_data_list)); - list->len = pdu[1]; - list->num = (len - 2) / list->len; + elen = pdu[1]; + num = (len - 2) / elen; + list = att_data_list_alloc(num, elen); - list->data = malloc(sizeof(uint8_t *) * list->num); ptr = &pdu[2]; - for (i = 0; i < list->num; i++) { - list->data[i] = malloc(sizeof(uint8_t) * list->len); + for (i = 0; i < num; i++) { memcpy(list->data[i], ptr, list->len); ptr += list->len; } @@ -775,6 +794,7 @@ struct att_data_list *dec_find_info_resp(const uint8_t *pdu, int len, { struct att_data_list *list; uint8_t *ptr; + uint16_t elen, num; int i; if (pdu == NULL) @@ -787,22 +807,19 @@ struct att_data_list *dec_find_info_resp(const uint8_t *pdu, int len, return 0; *format = pdu[1]; - - list = malloc(sizeof(struct att_data_list)); - - list->len = sizeof(pdu[0]) + sizeof(*format); + elen = sizeof(pdu[0]) + sizeof(*format); if (*format == 0x01) - list->len += 2; + elen += 2; else if (*format == 0x02) - list->len += 16; + elen += 16; - list->num = (len - 2) / list->len; - list->data = malloc(sizeof(uint8_t *) * list->num); + num = (len - 2) / elen; ptr = (void *) &pdu[2]; - for (i = 0; i < list->num; i++) { - list->data[i] = malloc(list->len); + list = att_data_list_alloc(num, elen); + + for (i = 0; i < num; i++) { memcpy(list->data[i], ptr, list->len); ptr += list->len; } @@ -859,10 +876,7 @@ struct attribute *dec_indication(const uint8_t *pdu, int len) if (len < min_len) return NULL; - a = malloc(sizeof(struct attribute) + len - min_len); - if (a == NULL) - return NULL; - + a = g_malloc0(sizeof(struct attribute) + len - min_len); a->len = len - min_len; a->handle = att_get_u16(&pdu[1]); |