void hb_dynsymFree(const char *szName)

145 views
Skip to first unread message

Antonio Linares

unread,
Feb 13, 2024, 3:15:56 PMFeb 13
to Harbour Developers
Proposal. I appreciate your comments,

void hb_dynsymFree(const char *szName) {
    HB_SYMCNT uiPos;
    PHB_DYNS pDynSym;

    HB_DYNSYM_LOCK();

    // Buscar el símbolo en la tabla de símbolos dinámicos
    pDynSym = hb_dynsymPos(szName, &uiPos);
    if (pDynSym) {
        // Liberar la memoria asignada para el símbolo
        hb_xfree(pDynSym->pSymbol);
        hb_xfree(pDynSym);

        // Eliminar el símbolo de la tabla de símbolos dinámicos
        if (uiPos < s_uiDynSymbols - 1) {
            memmove(&s_pDynItems[uiPos], &s_pDynItems[uiPos + 1], sizeof(DYNHB_ITEM) * (s_uiDynSymbols - uiPos - 1));
        }
        s_uiDynSymbols--;

        // Reasignar la memoria para la tabla de símbolos dinámicos
        if (s_uiDynSymbols == 0) {
            hb_xfree(s_pDynItems);
            s_pDynItems = NULL;
        } else {
            s_pDynItems = (PDYNHB_ITEM)hb_xrealloc(s_pDynItems, sizeof(DYNHB_ITEM) * s_uiDynSymbols);
        }
    }

    HB_DYNSYM_UNLOCK();
}

regards
Reply all
Reply to author
Forward
0 new messages