diff options
Diffstat (limited to '')
-rw-r--r--source/filter.c8
1 file changed, 6 insertions, 2 deletions
diff --git a/source/filter.c b/source/filter.c
index ec48007..b36f03e 100644
--- a/source/filter.c
+++ b/source/filter.c
@@ -225,15 +225,19 @@ static inline int emit_unfiltered(lua_State *lua_state, void (*emit)(const char
if (!text)
return 0;
+ // A script that writes while it is still loading runs before cgit has
+ // hooked stdout for it, so there is no hook to take off.
saved_write = filter_write;
saved_filter = current_write_filter;
- unhook_write();
+ if (saved_write)
+ unhook_write();
emit(text);
// emit leaves bytes in the html buffer, so empty it while the hook is
// still off. Re-hooking first would send the page's own bytes back into
// the filter.
html_flush();
- hook_write(saved_filter, saved_write);
+ if (saved_write)
+ hook_write(saved_filter, saved_write);
return 0;
}