From 9c017e512e275d151aa8872e92af674930a7844d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Mon, 19 Sep 2016 10:52:07 +0200 Subject: [PATCH] commands: Add some band-aid to convert Fixes #2458 --- commands/convert.go | 3 ++- hugolib/page.go | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/commands/convert.go b/commands/convert.go index da8217810..a0decf25d 100644 --- a/commands/convert.go +++ b/commands/convert.go @@ -137,7 +137,8 @@ func convertContents(mark rune) (err error) { page.SetDir(filepath.Join(helpers.AbsPathify(viper.GetString("ContentDir")), file.Dir())) page.SetSourceContent(psr.Content()) if err = page.SetSourceMetaData(metadata, mark); err != nil { - return fmt.Errorf("Failed to set source metadata for file %q: %s", page.FullFilePath(), err) + jww.ERROR.Printf("Failed to set source metadata for file %q: %s. For more info see For more info see https://github.com/spf13/hugo/issues/2458", page.FullFilePath(), err) + continue } if outputDir != "" { diff --git a/hugolib/page.go b/hugolib/page.go index b72cfcfe9..1acd9c056 100644 --- a/hugolib/page.go +++ b/hugolib/page.go @@ -1020,15 +1020,28 @@ func (p *Page) SetSourceContent(content []byte) { } func (p *Page) SetSourceMetaData(in interface{}, mark rune) (err error) { - by, err := parser.InterfaceToFrontMatter(in, mark) + // See https://github.com/spf13/hugo/issues/2458 + defer func() { + if r := recover(); r != nil { + var ok bool + err, ok = r.(error) + if !ok { + err = fmt.Errorf("error from marshal: %v", r) + } + } + }() + + var by []byte + + by, err = parser.InterfaceToFrontMatter(in, mark) if err != nil { - return err + return } by = append(by, '\n') p.Source.Frontmatter = by - return nil + return } func (p *Page) SafeSaveSourceAs(path string) error {