rem: printf("cannot remove non existent TextBlock!\b");
context: WMRemoveTextBlock(WMText *tPtr) {    TextBlock *tb = NULL;    if (!tPtr || !tPtr->firstTextBlock || !tPtr->lastTextBlock            || !tPtr->currentTextBlock) {        printf("cannot remove non existent TextBlock!\b");        return NULL;    }    tb = tPtr->currentTextBlock;    if (tb->graphic) {        WMRemoveFromArray(tPtr->gfxItems, (void *)tb);        if(tb->object) {            WMUnmapWidget(tb->d.widget);        }    }        if (tPtr->currentTextBlock == tPtr->firstTextBlock) {        if (tPtr->currentTextBlock->next)             tPtr->currentTextBlock->next->prior = NULL;        tPtr->firstTextBlock = tPtr->currentTextBlock->next;        tPtr->currentTextBlock = tPtr->firstTextBlock;    } else if (tPtr->currentTextBlock == tPtr->lastTextBlock) {        tPtr->currentTextBlock->prior->next = NULL;        tPtr->lastTextBlock = tPtr->currentTextBlock->prior;        tPtr->currentTextBlock = tPtr->lastTextBlock;    } else {        tPtr->currentTextBlock->prior->next = tPtr->currentTextBlock->next;        tPtr->currentTextBlock->next->prior = tPtr->currentTextBlock->prior;        tPtr->currentTextBlock = tPtr->currentTextBlock->next;    }        return (void *)tb;}