fix(ui): add locking around markdown rendering
Evan Wies
created
Needed to prevent race conditions, which may segfault.
Signed-off-by: Evan Wies <evan@neomantra.net>
Change summary
internal/ui/chat/user.go | 9 +++++++++
1 file changed, 9 insertions(+)
Detailed changes
@@ -74,8 +74,12 @@ func (m *UserMessageItem) RawRender(width int) string {
}
renderer := common.MarkdownRenderer(m.sty, cappedWidth)
+ mu := common.LockMarkdownRenderer(renderer)
+ mu.Lock()
result, err := renderer.Render(msgContent)
+ mu.Unlock()
+
if err != nil {
content = msgContent
} else {
@@ -102,7 +106,12 @@ func (m *UserMessageItem) renderSkillInvocation(content string, width int) strin
if err := xml.Unmarshal([]byte(content), &skill); err != nil {
// If parsing fails, just render as markdown
renderer := common.MarkdownRenderer(m.sty, width)
+ mu := common.LockMarkdownRenderer(renderer)
+
+ mu.Lock()
result, err := renderer.Render(content)
+ mu.Unlock()
+
if err != nil {
return content
}