fix a panic and handle cleaning up after a panic

This commit is contained in:
David 2021-07-28 21:06:49 -04:00
parent c2d2fe25c0
commit 4f4758f7fe
3 changed files with 18 additions and 0 deletions

View File

@ -5,6 +5,7 @@ import (
"fmt" "fmt"
"log" "log"
"os" "os"
"runtime/debug"
"sync" "sync"
"git.yetaga.in/alazyreader/library/book" "git.yetaga.in/alazyreader/library/book"
@ -116,6 +117,19 @@ func main() {
if err != nil { if err != nil {
log.Fatalln(err) log.Fatalln(err)
} }
// cleanup our screen and log if we panic and crash out somewhere
defer func() {
if r := recover(); r != nil {
if screen != nil {
screen.Fini()
}
fmt.Println("fatal panic;", r)
if c.Debug {
fmt.Println("stacktrace: \n" + string(debug.Stack()))
}
return
}
}()
l := ui.NewList(Titles(state.Get("library").([]book.Book)), 0) l := ui.NewList(Titles(state.Get("library").([]book.Book)), 0)
menu := ui.NewBox( menu := ui.NewBox(

View File

@ -6,4 +6,5 @@ type Config struct {
DBHost string DBHost string
DBPort string DBPort string
DBName string DBName string
Debug bool
} }

View File

@ -296,6 +296,9 @@ func (l *List) Selected() int {
} }
func (l *List) SelectedID() int { func (l *List) SelectedID() int {
if l.listItems == nil || len(l.listItems) == 0 {
return 0
}
return l.listItems[l.selected].Key return l.listItems[l.selected].Key
} }