summaryrefslogblamecommitdiff
path: root/src/poison.hpp
blob: e7cc4cca3836189688104a3c6262e9b30a156ec4 (plain) (tree)
1
2
3
4
5
6
7
8
9
10




                                                     

                             
 

                               






                                                    
 
                            
                                                           









                                                                              



                          
 
                         






































                                                              


                          

                                                 






                                                               
// impossible(*) to use safely
// removed in C11
#pragma GCC poison gets

// TODO fill in as they are removed from source code:
// double (use a fixed class)
#pragma GCC poison float

#pragma GCC poison dynamic_cast

// Local time is forbidden.
#pragma GCC poison timelocal // timegm
#pragma GCC poison mktime // timegm
#pragma GCC poison localtime // gmtime
#pragma GCC poison localtime_r // gmtime_r

#pragma GCC poison time // TimeT::now() or gettick()

// Avoid manual allocations.
// Use some sort of managed container, or at least dumb_ptr

// new is needed when resetting unique_ptr.
// No it isn't. It doesn't matter if it's a little more verbose; it's cleaner.
//#define really_new1 new
// delete is needed for unique_ptr's deleter.
#define really_delete1 delete

#pragma GCC poison new
#pragma GCC poison delete

#pragma GCC poison malloc
#pragma GCC poison calloc
#pragma GCC poison realloc
#pragma GCC poison free

#pragma GCC poison strdup
#pragma GCC poison strndup

// complete list of glibc whose results may need to be free()d
// not believed to be used
#pragma GCC poison posix_memalign
#pragma GCC poison aligned_alloc
#pragma GCC poison memalign
#pragma GCC poison valloc
#pragma GCC poison pvalloc

#pragma GCC poison asprintf
#pragma GCC poison vasprintf

#pragma GCC poison canonicalize_file_name

#pragma GCC poison cfree

#pragma GCC poison open_memstream
#pragma GCC poison open_wmemstream

// *scanf %ms is done very carefully.
//#pragma GCC poison scanf
//#pragma GCC poison fscanf
//#pragma GCC poison sscanf
//#pragma GCC poison vscanf
//#pragma GCC poison vsscanf
//#pragma GCC poison vfscanf

#pragma GCC poison getcwd
#pragma GCC poison get_current_dir_name

#pragma GCC poison malloc_get_state

#pragma GCC poison realpath

#pragma GCC poison tempnam

#pragma GCC poison wcsdup

#pragma GCC poison memcpy
#pragma GCC poison memmove
#pragma GCC poison memset
#pragma GCC poison memcmp
#pragma GCC poison strncpy // in favor of strzcpy

#pragma GCC poison string // in favor of FString, MString, etc.
#pragma GCC poison strcasecmp
#pragma GCC poison toupper
#pragma GCC poison tolower
#pragma GCC poison isupper
#pragma GCC poison islower