summaryrefslogtreecommitdiff
path: root/src/common/nullpo.c
diff options
context:
space:
mode:
authorHaru <haru@dotalux.com>2013-12-13 16:28:22 +0100
committerHaru <haru@dotalux.com>2013-12-17 01:02:32 +0100
commit853c5a3141d1f431af95aed55d991334a2b995f6 (patch)
tree09ce65b20320045954be0b3582e38fb7d01fef0b /src/common/nullpo.c
parentefe4174e59dc462130fde872365e891a7c73654a (diff)
downloadhercules-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.c82
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ログをファイルに書き出せたら
- // まとめて提出できるなと思っていたり。
}