Commit c275e866 by András Bodor

clang19 warningok

 - memtrace frissítés
 - gtest_lite/string2 unused warningok kiküszöbölése
parent 874bc06f
...@@ -225,6 +225,7 @@ public: ...@@ -225,6 +225,7 @@ public:
} }
/// Teszt vége /// Teszt vége
std::ostream& end(bool memchk = false) { std::ostream& end(bool memchk = false) {
(void)memchk;
#ifdef MEMTRACE #ifdef MEMTRACE
if (memchk && ablocks != memtrace::allocated_blocks()) { if (memchk && ablocks != memtrace::allocated_blocks()) {
status = false; status = false;
......
...@@ -5,8 +5,9 @@ Keszitette: Peregi Tamas, BME IIT, 2011 ...@@ -5,8 +5,9 @@ Keszitette: Peregi Tamas, BME IIT, 2011
Kanari: Szeberenyi Imre, 2013. Kanari: Szeberenyi Imre, 2013.
VS 2012: Szeberényi Imre, 2015., VS 2012: Szeberényi Imre, 2015.,
mem_dump: 2016. mem_dump: 2016.
meset felszabaditaskor: 2018. memset felszabaditaskor: 2018.
typo: 2019. typo: 2019.
poi_check: 2021.
*********************************/ *********************************/
/*definialni kell, ha nem paracssorbol allitjuk be (-DMEMTRACE) */ /*definialni kell, ha nem paracssorbol allitjuk be (-DMEMTRACE) */
...@@ -178,7 +179,6 @@ START_NAMESPACE ...@@ -178,7 +179,6 @@ START_NAMESPACE
dying = TRUE; dying = TRUE;
exit(120); exit(120);
} }
static void initialize(); static void initialize();
END_NAMESPACE END_NAMESPACE
...@@ -188,6 +188,7 @@ END_NAMESPACE ...@@ -188,6 +188,7 @@ END_NAMESPACE
#ifdef MEMTRACE_TO_MEMORY #ifdef MEMTRACE_TO_MEMORY
START_NAMESPACE START_NAMESPACE
typedef struct _registry_item { typedef struct _registry_item {
void * p; /* mem pointer*/ void * p; /* mem pointer*/
size_t size; /* size*/ size_t size; /* size*/
...@@ -197,6 +198,12 @@ START_NAMESPACE ...@@ -197,6 +198,12 @@ START_NAMESPACE
static registry_item registry; /*sentinel*/ static registry_item registry; /*sentinel*/
static registry_item *find_registry_item(void * p) {
registry_item *n = &registry;
for(; n->next && n->next->p != p ; n=n->next);
return n;
}
static void print_registry_item(registry_item * p) { static void print_registry_item(registry_item * p) {
if (p) { if (p) {
print_registry_item(p->next); print_registry_item(p->next);
...@@ -225,6 +232,13 @@ START_NAMESPACE ...@@ -225,6 +232,13 @@ START_NAMESPACE
} }
return 0; return 0;
} }
/* Ellenorzi, hogy a pointer regisztralt-e. Ha nem, akkor 0-val tér vissza */
int poi_check(void *pu) {
if (pu == NULL) return 1;
initialize();
return find_registry_item(P(pu))->next != NULL;
}
END_NAMESPACE END_NAMESPACE
#endif/*MEMTRACE_TO_MEMORY*/ #endif/*MEMTRACE_TO_MEMORY*/
...@@ -271,14 +285,6 @@ START_NAMESPACE ...@@ -271,14 +285,6 @@ START_NAMESPACE
return TRUE; return TRUE;
} }
#ifdef MEMTRACE_TO_MEMORY
static registry_item *find_registry_item(void * p) {
registry_item *n = &registry;
for(; n->next && n->next->p != p ; n=n->next);
return n;
}
#endif
static void unregister_memory(void * p, call_t call) { static void unregister_memory(void * p, call_t call) {
initialize(); initialize();
#ifdef MEMTRACE_TO_FILE #ifdef MEMTRACE_TO_FILE
...@@ -487,7 +493,15 @@ void operator delete(void * p) THROW_NOTHING { ...@@ -487,7 +493,15 @@ void operator delete(void * p) THROW_NOTHING {
void operator delete[](void * p) THROW_NOTHING { void operator delete[](void * p) THROW_NOTHING {
memtrace::traced_delete(p,FDELETEARR); memtrace::traced_delete(p,FDELETEARR);
} }
#if __cplusplus >= 201402L
void operator delete(void * p, size_t) THROW_NOTHING {
memtrace::traced_delete(p,FDELETE);
}
void operator delete[](void * p, size_t) THROW_NOTHING {
memtrace::traced_delete(p,FDELETEARR);
}
#endif
/* Visual C++ 2012 miatt kell, mert háklis, hogy nincs megfelelő delete, bár senki sem használja */ /* Visual C++ 2012 miatt kell, mert háklis, hogy nincs megfelelő delete, bár senki sem használja */
void operator delete(void * p, int, const char *) THROW_NOTHING { void operator delete(void * p, int, const char *) THROW_NOTHING {
......
...@@ -5,7 +5,8 @@ Keszitette: Peregi Tamas, BME IIT, 2011 ...@@ -5,7 +5,8 @@ Keszitette: Peregi Tamas, BME IIT, 2011
Kanari: Szeberenyi Imre, 2013., Kanari: Szeberenyi Imre, 2013.,
VS 2012: Szeberényi Imre, 2015., VS 2012: Szeberényi Imre, 2015.,
mem_dump: 2016. mem_dump: 2016.
inclue-ok: 2017., 2018. 2019. inclue-ok: 2017., 2018., 2019., 2021., 2022.
clang-mágia:Bodor András, 2025
*********************************/ *********************************/
#ifndef MEMTRACE_H #ifndef MEMTRACE_H
...@@ -102,6 +103,7 @@ END_NAMESPACE ...@@ -102,6 +103,7 @@ END_NAMESPACE
#if defined(MEMTRACE_TO_MEMORY) #if defined(MEMTRACE_TO_MEMORY)
START_NAMESPACE START_NAMESPACE
int mem_check(void); int mem_check(void);
int poi_check(void*);
END_NAMESPACE END_NAMESPACE
#endif #endif
...@@ -153,6 +155,18 @@ END_NAMESPACE ...@@ -153,6 +155,18 @@ END_NAMESPACE
#include <map> #include <map>
#include <algorithm> #include <algorithm>
#include <functional> #include <functional>
#include <memory>
#include <iomanip>
#include <locale>
#include <typeinfo>
#include <ostream>
#include <stdexcept>
#include <ctime>
#include <random>
#if __cplusplus >= 201103L
#include <iterator>
#include <regex>
#endif
#endif #endif
#ifdef MEMTRACE_CPP #ifdef MEMTRACE_CPP
namespace std { namespace std {
...@@ -178,8 +192,7 @@ START_NAMESPACE ...@@ -178,8 +192,7 @@ START_NAMESPACE
#define realloc(old,size) TRACEC(traced_realloc)(old,size,#size,__LINE__,__FILE__) #define realloc(old,size) TRACEC(traced_realloc)(old,size,#size,__LINE__,__FILE__)
void * traced_realloc(void * old, size_t size, const char *size_txt, int line, const char * file); void * traced_realloc(void * old, size_t size, const char *size_txt, int line, const char * file);
void mem_dump(void const *mem, size_t size, FILE* fp); void mem_dump(void const *mem, size_t size, FILE* fp = stdout);
END_NAMESPACE END_NAMESPACE
#endif/*MEMTRACE_C*/ #endif/*MEMTRACE_C*/
...@@ -200,10 +213,26 @@ void * operator new[](size_t size) THROW_BADALLOC; ...@@ -200,10 +213,26 @@ void * operator new[](size_t size) THROW_BADALLOC;
void operator delete(void * p) THROW_NOTHING; void operator delete(void * p) THROW_NOTHING;
void operator delete[](void * p) THROW_NOTHING; void operator delete[](void * p) THROW_NOTHING;
#if __cplusplus >= 201402L
// sized delete miatt: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3536.html
void operator delete(void * p, size_t) THROW_NOTHING;
void operator delete[](void * p, size_t) THROW_NOTHING;
#endif
/* Visual C++ 2012 miatt kell, mert háklis, hogy nincs megfelelő delete, bár senki sem használja */ /* Visual C++ 2012 miatt kell, mert háklis, hogy nincs megfelelő delete, bár senki sem használja */
void operator delete(void *p, int, const char *) THROW_NOTHING; void operator delete(void *p, int, const char *) THROW_NOTHING;
void operator delete[](void *p, int, const char *) THROW_NOTHING; void operator delete[](void *p, int, const char *) THROW_NOTHING;
// clang >= 3.1 esetén vannak warningok, amiket zavar, hogy redefiniálva van a new/delete
#if defined(__clang__) && (__clang_major__ > 3 || \
(__clang_major__ == 3 && __clang_minor__ > 0))
// Csak nagyon drasztikus warning szint mellet jön elő, amikor van rekurzívnak tűnő makró.
// Ilyenek a new és delete alább, hiszen olyan, mintha magukat hívnák, pedig nincs (ilyen)
// rekurzió makró szinten.
# pragma clang diagnostic ignored "-Wdisabled-macro-expansion"
// Bármilyen kulcsszó újradefiniálása esetén pánikol.
# pragma clang diagnostic ignored "-Wkeyword-macro"
#endif
#define new new(__LINE__, __FILE__) #define new new(__LINE__, __FILE__)
#define delete memtrace::set_delete_call(__LINE__, __FILE__),delete #define delete memtrace::set_delete_call(__LINE__, __FILE__),delete
...@@ -215,5 +244,8 @@ void operator delete[](void *p, int, const char *) THROW_NOTHING; ...@@ -215,5 +244,8 @@ void operator delete[](void *p, int, const char *) THROW_NOTHING;
#endif /*MEMTRACE_CPP*/ #endif /*MEMTRACE_CPP*/
#endif /*FROM_MEMTRACE_CPP*/ #endif /*FROM_MEMTRACE_CPP*/
#endif /*MEMCHECK*/ #else
#pragma message ( "MEMTRACE NOT DEFINED" )
#endif /*MEMTRACE*/
#endif /*MEMTRACE_H*/ #endif /*MEMTRACE_H*/
...@@ -74,6 +74,7 @@ unsigned int StringLen(const String &s0) { ...@@ -74,6 +74,7 @@ unsigned int StringLen(const String &s0) {
* @param s0 - referencia a String-re * @param s0 - referencia a String-re
*/ */
void printStringDbg(const String &s0) { void printStringDbg(const String &s0) {
(void)s0;
#ifdef DEBUG #ifdef DEBUG
cout << '[' << s0.len << "], " << s0.pData << '|' << endl; cout << '[' << s0.len << "], " << s0.pData << '|' << endl;
#endif #endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment