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