--- mqtt/src/Attic/aitmqtt.c 2011/11/22 13:03:26 1.1.1.1.2.10 +++ mqtt/src/Attic/aitmqtt.c 2011/11/28 13:19:39 1.1.1.1.2.12 @@ -238,10 +238,10 @@ mqtt_str2sub(const char **csStr, u_short strnum, u_cha memset(v, 0, (items + 1) * sizeof(mqtt_subscr_t)); for (i = 0; i < items; i++) { - v[i].sub_sb.val = htons(strlen(csStr[i])); - v[i].sub_data = strdup(csStr[i]); + v[i].sub_topic._size = strlen(csStr[i]); + v[i].sub_topic._base = strdup(csStr[i]); if (qoses && qoses[i] < MQTT_QOS_RESERVED) - v[i].sub_qos = qoses[i]; + v[i].sub_ret = qoses[i]; } return v; @@ -261,9 +261,16 @@ mqtt_subFree(mqtt_subscr_t ** __restrict subs) if (!subs) return; - for (v = *subs; v->sub_data; v++) { - free(v->sub_data); - v->sub_data = NULL; + for (v = *subs; v->sub_topic._base; v++) { + free(v->sub_topic._base); + v->sub_topic._base = NULL; + v->sub_topic._size = 0; + + if (v->sub_value._base) { + free(v->sub_value._base); + v->sub_value._base = NULL; + v->sub_value._size = 0; + } } free(*subs); @@ -280,7 +287,6 @@ inline mqtt_subscr_t * mqtt_subAlloc(u_short num) { mqtt_subscr_t *s = NULL; - register int i; s = malloc((num + 1) * sizeof(mqtt_subscr_t)); if (!s) { @@ -288,12 +294,6 @@ mqtt_subAlloc(u_short num) return NULL; } else memset(s, 0, (num + 1) * sizeof(mqtt_subscr_t)); - - for (i = 0; i < num; i++) - if (!(s[i].sub_data = malloc(0))) { - LOGERR; - break; - } return s; }