servicemp3.cpp: more simple/flexible streaming detection
[enigma2.git] / lib / base / eerror.h
index 6d38bcc74ec723ae2034e9f2ad22810ae4e1814d..6040565e5a40106271ae0eb93527bb176e19f033 100644 (file)
 #include <string>
 #include <new>
 #include <cxxabi.h>
-#endif // MEMLEAK_CHECK
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-#ifndef SWIG
-#define CHECKFORMAT __attribute__ ((__format__(__printf__, 1, 2)))
-#else
-#define CHECKFORMAT
-#endif
-
-void CHECKFORMAT eFatal(const char*, ...);
-
-enum { lvlDebug=1, lvlWarning=2, lvlFatal=4 };
-
-#ifndef SWIG
-extern Signal2<void, int, const std::string&> logOutput;
-extern int logOutputConsole;
-#endif
-
-#ifdef ASSERT
-#undef ASSERT
-#endif
-
-#ifdef DEBUG
-    void CHECKFORMAT eDebug(const char*, ...);
-    void CHECKFORMAT eDebugNoNewLine(const char*, ...);
-    void CHECKFORMAT eWarning(const char*, ...);
-#ifndef SWIG
-    #define ASSERT(x) { if (!(x)) eFatal("%s:%d ASSERTION %s FAILED!", __FILE__, __LINE__, #x); }
-#endif
-
-#ifdef MEMLEAK_CHECK
 typedef struct
 {
        unsigned int address;
        unsigned int size;
-       char *file;
+       const char *file;
        void *backtrace[BACKTRACE_DEPTH];
        unsigned char btcount;
        unsigned short line;
@@ -75,11 +41,11 @@ static inline void AddTrack(unsigned int addr,  unsigned int asize,  const char
                allocList = new(AllocList);
 
        info.address = addr;
-       info.file = strdup(fname);
+       info.file = fname;
        info.line = lnum;
        info.size = asize;
        info.type = type;
-       info.btcount = backtrace( info.backtrace, BACKTRACE_DEPTH );
+       info.btcount = 0; //backtrace( info.backtrace, BACKTRACE_DEPTH );
        singleLock s(memLock);
        (*allocList)[addr]=info;
 };
@@ -96,14 +62,11 @@ static inline void RemoveTrack(unsigned int addr, unsigned int type)
                if ( i->second.type != type )
                        i->second.type=3;
                else
-               {
-                       free(i->second.file);
                        allocList->erase(i);
-               }
        }
 };
 
-inline void * operator new(unsigned int size, const char *file, int line)
+inline void * operator new(size_t size, const char *file, int line)
 {
        void *ptr = (void *)malloc(size);
        AddTrack((unsigned int)ptr, size, file, line, 1);
@@ -116,7 +79,7 @@ inline void operator delete(void *p)
        free(p);
 };
 
-inline void * operator new[](unsigned int size, const char *file, int line)
+inline void * operator new[](size_t size, const char *file, int line)
 {
        void *ptr = (void *)malloc(size);
        AddTrack((unsigned int)ptr, size, file, line, 2);
@@ -134,7 +97,30 @@ void DumpUnfreed();
 
 #endif // MEMLEAK_CHECK
 
-#else
+#ifndef NULL
+#define NULL 0
+#endif
+
+#ifdef ASSERT
+#undef ASSERT
+#endif
+
+#ifndef SWIG
+
+#define CHECKFORMAT __attribute__ ((__format__(__printf__, 1, 2)))
+
+extern Signal2<void, int, const std::string&> logOutput;
+extern int logOutputConsole;
+
+void CHECKFORMAT eFatal(const char*, ...);
+enum { lvlDebug=1, lvlWarning=2, lvlFatal=4 };
+
+#ifdef DEBUG
+    void CHECKFORMAT eDebug(const char*, ...);
+    void CHECKFORMAT eDebugNoNewLine(const char*, ...);
+    void CHECKFORMAT eWarning(const char*, ...);
+    #define ASSERT(x) { if (!(x)) eFatal("%s:%d ASSERTION %s FAILED!", __FILE__, __LINE__, #x); }
+#else  // DEBUG
     inline void eDebug(const char* fmt, ...)
     {
     }
@@ -149,7 +135,10 @@ void DumpUnfreed();
     #define ASSERT(x) do { } while (0)
 #endif //DEBUG
 
-void ePythonOutput(const char *);
 void eWriteCrashdump();
 
+#endif // SWIG
+
+void ePythonOutput(const char *);
+
 #endif // __E_ERROR__