diff options
author | Haru <haru@dotalux.com> | 2013-12-13 16:28:22 +0100 |
---|---|---|
committer | Haru <haru@dotalux.com> | 2013-12-17 01:02:32 +0100 |
commit | 853c5a3141d1f431af95aed55d991334a2b995f6 (patch) | |
tree | 09ce65b20320045954be0b3582e38fb7d01fef0b /src/common/nullpo.c | |
parent | efe4174e59dc462130fde872365e891a7c73654a (diff) | |
download | hercules-853c5a3141d1f431af95aed55d991334a2b995f6.tar.gz hercules-853c5a3141d1f431af95aed55d991334a2b995f6.tar.bz2 hercules-853c5a3141d1f431af95aed55d991334a2b995f6.tar.xz hercules-853c5a3141d1f431af95aed55d991334a2b995f6.zip |
Nullpo cleanup
- Removed unused, nonportable nullpo checks with formatted message
(related: eAthena r15245)
- Converted nullpo_chk to a macro, to make it easier on the llvm static
analyzer.
- Added more details to the nullpo_info reports (related: eAthena
r15246)
- Ensured that the nullpo check macros evaluate their pointer argument
once and only once, so that it's safe to use with expressions that
assign values or have side-effects.
Signed-off-by: Haru <haru@dotalux.com>
Diffstat (limited to 'src/common/nullpo.c')
-rw-r--r-- | src/common/nullpo.c | 82 |
1 files changed, 7 insertions, 75 deletions
diff --git a/src/common/nullpo.c b/src/common/nullpo.c index 4383109a7..f0fc2c7ab 100644 --- a/src/common/nullpo.c +++ b/src/common/nullpo.c @@ -6,86 +6,18 @@ #include <string.h> #include "nullpo.h" #include "../common/showmsg.h" -// #include "logs.h" // 布石してみる -static void nullpo_info_core(const char *file, int line, const char *func, - const char *fmt, va_list ap); - -/*====================================== - * Nullチェック 及び 情報出力 - *--------------------------------------*/ -int nullpo_chk_f(const char *file, int line, const char *func, const void *target, - const char *fmt, ...) -{ - va_list ap; - - if (target != NULL) - return 0; - - va_start(ap, fmt); - nullpo_info_core(file, line, func, fmt, ap); - va_end(ap); - return 1; -} - -int nullpo_chk(const char *file, int line, const char *func, const void *target) -{ - if (target != NULL) - return 0; - - nullpo_info_core(file, line, func, NULL, NULL); - return 1; -} - - -/*====================================== - * nullpo情報出力(外部呼出し向けラッパ) - *--------------------------------------*/ -void nullpo_info_f(const char *file, int line, const char *func, - const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - nullpo_info_core(file, line, func, fmt, ap); - va_end(ap); -} - -void nullpo_info(const char *file, int line, const char *func) -{ - nullpo_info_core(file, line, func, NULL, NULL); -} - - -/*====================================== - * nullpo情報出力(Main) - *--------------------------------------*/ -static void nullpo_info_core(const char *file, int line, const char *func, - const char *fmt, va_list ap) -{ +/** + * Reports NULL pointer information + */ +void nullpo_info(const char *file, int line, const char *func, const char *targetname) { if (file == NULL) file = "??"; - func = - func == NULL ? "unknown": - func[0] == '\0' ? "unknown": - func; + if (func == NULL || *func == '\0') + func = "unknown"; ShowMessage("--- nullpo info --------------------------------------------\n"); - ShowMessage("%s:%d: in func `%s'\n", file, line, func); - if (fmt != NULL) - { - if (fmt[0] != '\0') - { - vprintf(fmt, ap); - - // 最後に改行したか確認 - if (fmt[strlen(fmt)-1] != '\n') - ShowMessage("\n"); - } - } + ShowMessage("%s:%d: target '%s' in func `%s'\n", file, line, targetname, func); ShowMessage("--- end nullpo info ----------------------------------------\n"); - - // ここらでnullpoログをファイルに書き出せたら - // まとめて提出できるなと思っていたり。 } |