shithub: hugo

Download patch

ref: 9c017e512e275d151aa8872e92af674930a7844d
parent: 2105e42aca22f07267fb56dbe17bbe10bd14560d
author: Bjørn Erik Pedersen <[email protected]>
date: Mon Sep 19 06:52:07 EDT 2016

commands: Add some band-aid to convert

Fixes #2458

--- a/commands/convert.go
+++ b/commands/convert.go
@@ -137,7 +137,8 @@
 		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 != "" {
--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -1020,15 +1020,28 @@
 }
 
 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 {