My Project
Data Structures | Functions | Variables
omError.c File Reference
#include <stdarg.h>
#include "omalloc.h"

Go to the source code of this file.

Data Structures

struct  omErrorString_s
 

Functions

const char * omError2String (omError_t error)
 
const char * omError2Serror (omError_t error)
 
omError_t omReportError (omError_t error, omError_t report_error, OM_FLR_DECL, const char *fmt,...)
 
void omErrorBreak ()
 

Variables

omError_t om_ErrorStatus = omError_NoError
 
omError_t om_InternalErrorStatus = omError_NoError
 
static const struct omErrorString_s om_ErrorStrings []
 
int om_CallErrorHook = 1
 

Data Structure Documentation

◆ omErrorString_s

struct omErrorString_s

Definition at line 16 of file omError.c.

Data Fields
omError_t error
char * s_error
char * string

Function Documentation

◆ omError2Serror()

const char * omError2Serror ( omError_t  error)

Definition at line 65 of file omError.c.

66{
67 int i = 0;
68 while (! (om_ErrorStrings[i].string == NULL && om_ErrorStrings[i].error == omError_MaxError))
69 {
71 i++;
72 }
73 return "omError_UnKnown";
74}
int i
Definition: cfEzgcd.cc:132
void error(const char *fmt,...)
Definition: emacs.cc:55
char * s_error
Definition: omError.c:19
static const struct omErrorString_s om_ErrorStrings[]
Definition: omError.c:24
@ omError_MaxError
Definition: omError.h:42
#define NULL
Definition: omList.c:12

◆ omError2String()

const char * omError2String ( omError_t  error)

Definition at line 54 of file omError.c.

55{
56 int i = 0;
57 while (! (om_ErrorStrings[i].string == NULL && om_ErrorStrings[i].error == omError_MaxError))
58 {
60 i++;
61 }
62 return "undocumented error";
63}
char * string
Definition: omError.c:20

◆ omErrorBreak()

void omErrorBreak ( void  )

Definition at line 137 of file omError.c.

138{}

◆ omReportError()

omError_t omReportError ( omError_t  error,
omError_t  report_error,
OM_FLR_DECL  ,
const char *  fmt,
  ... 
)

Definition at line 80 of file omError.c.

82{
83 int max_check, max_track;
84
85 if (report_error == omError_MaxError) return error;
86 /* reset MaxTrack and MaxCheck to prevent infinite loop, in case
87 printf allocates memory */
88 max_check = om_Opts.MaxCheck;
89 max_track = om_Opts.MaxTrack;
90 om_Opts.MaxCheck = 0;
91 om_Opts.MaxTrack = 0;
92
94 om_ErrorStatus = (report_error == omError_NoError ? error : report_error);
95
96 if (om_Opts.HowToReportErrors && om_ErrorStatus != omError_NoError)
97 {
98 /* to avoid spurious error msg in 64 bit mode*/
100 fprintf(stderr, "***%s: %s", omError2Serror(om_ErrorStatus), omError2String(om_ErrorStatus));
101
102#ifdef OM_INTERNAL_DEBUG
103 if (om_ErrorStatus != error)
104 fprintf(stderr, "\n___%s: %s", omError2Serror(error), omError2String(error));
105#endif
106
107 if (om_Opts.HowToReportErrors > 2 && fmt != NULL && *fmt != '\0')
108 {
109 va_list ap;
110 va_start(ap, fmt);
111 fputs( ": ",stderr);
112 vfprintf(stderr, fmt, ap);
113 va_end(ap);
114 }
115
116 if (om_Opts.HowToReportErrors > 1)
117 {
118#ifndef OM_NDEBUG
119 fputs("\n occurred at: ",stderr);
120 if (! _omPrintCurrentBackTrace(stderr, OM_FLR_VAL))
121 fputs(" ??",stderr);
122#endif
123 }
124 fputc('\n',stderr);
125 fflush(stderr);
126 }
128 om_Opts.ErrorHook();
129
130 om_Opts.MaxCheck = max_check;
131 om_Opts.MaxTrack = max_track;
132 return error;
133}
Definition: ap.h:40
omError_t om_ErrorStatus
Definition: omError.c:13
const char * omError2String(omError_t error)
Definition: omError.c:54
const char * omError2Serror(omError_t error)
Definition: omError.c:65
int om_CallErrorHook
Definition: omError.c:77
omError_t om_InternalErrorStatus
Definition: omError.c:14
@ omError_NoError
Definition: omError.h:18
@ omError_StickyBin
Definition: omError.h:41
omOpts_t om_Opts
Definition: omOpts.c:13
int _omPrintCurrentBackTrace(FILE *fd, OM_FLR_DECL)
Definition: omRet2Info.c:270

Variable Documentation

◆ om_CallErrorHook

int om_CallErrorHook = 1

Definition at line 77 of file omError.c.

◆ om_ErrorStatus

omError_t om_ErrorStatus = omError_NoError

Definition at line 13 of file omError.c.

◆ om_ErrorStrings

const struct omErrorString_s om_ErrorStrings[]
static
Initial value:
=
{
{omError_NoError, "omError_NoError", "no error"},
{omError_Unknown, "omError_Unknown", "unknown error" },
{omError_MemoryCorrupted, "omError_MemoryCorrupted", "memory corrupted"},
{omError_InternalBug, "omError_InternalBug", "internal omalloc bug"},
{omError_NullAddr, "omError_NullAddr", "addr is NULL"},
{omError_InvalidRangeAddr, "omError_InvalidRangeAddr", "addr not in valid range"},
{omError_FalseAddr, "omError_FalseAddr", "addr not as returned by omalloc"},
{omError_FalseAddrOrMemoryCorrupted, "omError_FalseAddrOrMemoryCorrupted", "addr not as returned by omalloc or memory corrupted", },
{omError_WrongSize, "omError_WrongSize", "wrong size specification of addr"},
{omError_FreedAddr, "omError_FreedAddr", "addr had previosuly been freed"},
{omError_FreedAddrOrMemoryCorrupted, "omError_FreedAddrOrMemoryCorrupted", "addr had previosuly been freed or memory corrupted"},
{omError_WrongBin, "omError_WrongBin", "addr is not from given Bin"},
{omError_UnknownBin, "omError_UnknownBin", "given Bin is unknown"},
{omError_NotBinAddr, "omError_NotBinAddr", "addr is not a BinAddr"},
{omError_UnalignedAddr, "omError_UnalignedAddr", "addr is unaligned"},
{omError_NullSizeAlloc, "omError_NullSizeAlloc", "alloc of size 0"},
{omError_ListCycleError, "omError_ListCycleError", "list has cycles"},
{omError_SortedListError, "omError_SortedListError", "sorted list is unsorted"},
{omError_KeptAddrListCorrupted, "omError_KeptAddrListCorrupted", "list of kept addresses are corrupted"},
{omError_FrontPattern, "omError_FrontPattern", "written to front of addr"},
{omError_BackPattern, "omError_BackPattern", "written after end of addr"},
{omError_FreePattern, "omError_FreePattern", "written into freed memory"},
{omError_NotString, "omError_NotString", "string not null terminated"},
{omError_StickyBin, "omError_StickyBin", "wrong handling of sticky bins"},
}
@ omError_WrongSize
Definition: omError.h:26
@ omError_ListCycleError
Definition: omError.h:34
@ omError_BackPattern
Definition: omError.h:38
@ omError_NullAddr
Definition: omError.h:22
@ omError_NullSizeAlloc
Definition: omError.h:33
@ omError_FrontPattern
Definition: omError.h:39
@ omError_UnalignedAddr
Definition: omError.h:32
@ omError_MemoryCorrupted
Definition: omError.h:21
@ omError_FreedAddr
Definition: omError.h:27
@ omError_UnknownBin
Definition: omError.h:30
@ omError_FreedAddrOrMemoryCorrupted
Definition: omError.h:28
@ omError_NotString
Definition: omError.h:40
@ omError_SortedListError
Definition: omError.h:35
@ omError_KeptAddrListCorrupted
Definition: omError.h:36
@ omError_InternalBug
Definition: omError.h:20
@ omError_NotBinAddr
Definition: omError.h:31
@ omError_InvalidRangeAddr
Definition: omError.h:23
@ omError_FalseAddr
Definition: omError.h:24
@ omError_WrongBin
Definition: omError.h:29
@ omError_Unknown
Definition: omError.h:19
@ omError_FreePattern
Definition: omError.h:37
@ omError_FalseAddrOrMemoryCorrupted
Definition: omError.h:25

Definition at line 24 of file omError.c.

◆ om_InternalErrorStatus

omError_t om_InternalErrorStatus = omError_NoError

Definition at line 14 of file omError.c.