このページを編集する際は、編集に関する方針に従ってください。
void elog_start(const char *filename, int lineno, const char *funcname) { }
void elog_start(const char *filename, int lineno, const char *funcname) {
ErrorData *edata;
if (++errordata_stack_depth >= ERRORDATA_STACK_SIZE)
{ /* * Wups, stack not big enough. We treat this as a PANIC condition * because it suggests an infinite loop of errors during error * recovery. */ errordata_stack_depth = -1; /* make room on stack */
ereport(PANIC, (errmsg_internal("ERRORDATA_STACK_SIZE exceeded")));
}
edata = &errordata[errordata_stack_depth];
edata->filename = filename; edata->lineno = lineno; edata->funcname = funcname; /* errno is saved now so that error parameter eval can't change it */ edata->saved_errno = errno;
}
* elog_start --- startup for old-style API * * All that we do here is stash the hidden filename/lineno/funcname * arguments into a stack entry. * * We need this to be separate from elog_finish because there's no other * portable way to deal with inserting extra arguments into the elog call. * (If macros with variable numbers of arguments were portable, it'd be * easy, but they aren't.)
更新日 | 更新者 | 更新内容 |
2007/4/24 | testnoda/ページ作者 | 解読を一旦中止(関数ポインタ①/解読日記を参照) |