rem: WMFreeArray(array);
context: getStreamObjects(WMText *tPtr, int sel){    WMArray *array = WMCreateArrayWithDestructor(4, releaseStreamObjects);    WMData *data;    char *stream;    unsigned short len;    char *start, *fa, *desc;    stream = getStream(tPtr, sel, 1);    if(!stream)        return NULL;        start = stream;    while (start) {        fa = strchr(start, 0xFA);        if (fa) {            if((int)(fa - start)>0) {                desc = start;               desc[(int)(fa - start)] = 0;               data = WMCreateDataWithBytes((void *)desc, (int)(fa - start));               WMSetDataFormat(data, TYPETEXT);               WMAddToArray(array, (void *) data);            }                                len = *(fa+1)*0xff + *(fa+2);            data = WMCreateDataWithBytes((void *)(fa+4), len);            WMSetDataFormat(data, *(fa+3));            WMAddToArray(array, (void *) data);            start = fa + len + 4;                     } else {             if (start && strlen(start)) {                 data = WMCreateDataWithBytes((void *)start, strlen(start));                 WMSetDataFormat(data, TYPETEXT);                 WMAddToArray(array, (void *) data);             }                start = fa;         }       }        wfree(stream);    return array;    WMFreeArray(array);}