OCI_Error * OCI_ErrorGet ( boolean check ) { OCI_Error *err = NULL; if (OCILib.loaded && OCI_LIB_THREADED) { if (OCI_ThreadKeyGet(OCILib.key_errs, (void **)(dvoid *)&err)) { if (!err) { err = OCI_ErrorCreate(); if (err) { OCI_ThreadKeySet(OCILib.key_errs, err); } } } } else { err = &OCILib.lib_err; } if (check && err && err->active) { err = NULL; } return err; }
OCI_Error * OCI_ErrorGet ( boolean check, boolean warning ) { OCI_Error *err = NULL; if ((warning == TRUE) && (OCILib.warnings_on == FALSE)) { return NULL; } if (OCILib.loaded == TRUE) { if (OCI_ThreadKeyGet(OCILib.key_errs, ( void **) (dvoid *) &err) == TRUE) { if (err == NULL) { err = OCI_ErrorCreate(); if (err != NULL) { OCI_ThreadKeySet(OCILib.key_errs, err); } } else if (check == TRUE) { if ((err->active == TRUE) || (err->warning != warning)) { err = NULL; } } } } else { err = &OCILib.lib_err; if (err != NULL) { if ((err->active == TRUE) || (err->warning != warning)) { err = NULL; } } } return err; }