<div dir="ltr">Any takers to accept this one?</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 4, 2018 at 9:26 AM, Matt Hoosier <span dir="ltr"><<a href="mailto:matt.hoosier@gmail.com" target="_blank">matt.hoosier@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Rather than segfaulting by attempting to traverse an initially<br>
null log handler pointer, explicitly print a message and abort.<br>
<br>
Signed-off-by: Matt Hoosier <<a href="mailto:matt.hoosier@gmail.com">matt.hoosier@gmail.com</a>><br>
---<br>
 libweston/log.c | 22 ++++++++++++++++++++--<br>
 1 file changed, 20 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/libweston/log.c b/libweston/log.c<br>
index 7d99a95d..c21f25e9 100644<br>
--- a/libweston/log.c<br>
+++ b/libweston/log.c<br>
@@ -36,8 +36,26 @@<br>
<br>
 #include "compositor.h"<br>
<br>
-static log_func_t log_handler = 0;<br>
-static log_func_t log_continue_handler = 0;<br>
+static int default_log_handler(const char *fmt, va_list ap);<br>
+<br>
+static log_func_t log_handler = default_log_handler;<br>
+static log_func_t log_continue_handler = default_log_handler;<br>
+<br>
+/** Sentinel log message handler<br>
+ *<br>
+ * This function is used as the default handler for log messages. It<br>
+ * exists only to issue a noisy reminder to the user that a real handler<br>
+ * must be installed prior to issuing logging calls. The process is<br>
+ * immediately aborted after the reminder is printed.<br>
+ *<br>
+ * \param fmt The format string. Ignored.<br>
+ * \param va The variadic argument list. Ignored.<br>
+ */<br>
+static int default_log_handler(const char *fmt, va_list ap)<br>
+{<br>
+        fprintf(stderr, "weston_log_set_handler() must be called before using of weston_log().\n");<br>
+        abort();<br>
+}<br>
<br>
 /** Install the log handler<br>
  *<br>
<span class="HOEnZb"><font color="#888888">-- <br>
2.13.6<br>
<br>
</font></span></blockquote></div><br></div>