@ -135,6 +135,9 @@ func wikiContentsByName(ctx *context.Context, commit *git.Commit, wikiName strin
func renderViewPage ( ctx * context . Context ) ( * git . Repository , * git . TreeEntry ) {
func renderViewPage ( ctx * context . Context ) ( * git . Repository , * git . TreeEntry ) {
wikiRepo , commit , err := findWikiRepoCommit ( ctx )
wikiRepo , commit , err := findWikiRepoCommit ( ctx )
if err != nil {
if err != nil {
if wikiRepo != nil {
wikiRepo . Close ( )
}
if ! git . IsErrNotExist ( err ) {
if ! git . IsErrNotExist ( err ) {
ctx . ServerError ( "GetBranchCommit" , err )
ctx . ServerError ( "GetBranchCommit" , err )
}
}
@ -222,6 +225,9 @@ func renderViewPage(ctx *context.Context) (*git.Repository, *git.TreeEntry) {
var buf strings . Builder
var buf strings . Builder
if err := markdown . Render ( rctx , bytes . NewReader ( data ) , & buf ) ; err != nil {
if err := markdown . Render ( rctx , bytes . NewReader ( data ) , & buf ) ; err != nil {
if wikiRepo != nil {
wikiRepo . Close ( )
}
ctx . ServerError ( "Render" , err )
ctx . ServerError ( "Render" , err )
return nil , nil
return nil , nil
}
}
@ -229,6 +235,9 @@ func renderViewPage(ctx *context.Context) (*git.Repository, *git.TreeEntry) {
buf . Reset ( )
buf . Reset ( )
if err := markdown . Render ( rctx , bytes . NewReader ( sidebarContent ) , & buf ) ; err != nil {
if err := markdown . Render ( rctx , bytes . NewReader ( sidebarContent ) , & buf ) ; err != nil {
if wikiRepo != nil {
wikiRepo . Close ( )
}
ctx . ServerError ( "Render" , err )
ctx . ServerError ( "Render" , err )
return nil , nil
return nil , nil
}
}
@ -237,6 +246,9 @@ func renderViewPage(ctx *context.Context) (*git.Repository, *git.TreeEntry) {
buf . Reset ( )
buf . Reset ( )
if err := markdown . Render ( rctx , bytes . NewReader ( footerContent ) , & buf ) ; err != nil {
if err := markdown . Render ( rctx , bytes . NewReader ( footerContent ) , & buf ) ; err != nil {
if wikiRepo != nil {
wikiRepo . Close ( )
}
ctx . ServerError ( "Render" , err )
ctx . ServerError ( "Render" , err )
return nil , nil
return nil , nil
}
}
@ -377,17 +389,14 @@ func Wiki(ctx *context.Context) {
}
}
wikiRepo , entry := renderViewPage ( ctx )
wikiRepo , entry := renderViewPage ( ctx )
if ctx . Written ( ) {
if wikiRepo != nil {
wikiRepo . Close ( )
}
return
}
defer func ( ) {
defer func ( ) {
if wikiRepo != nil {
if wikiRepo != nil {
wikiRepo . Close ( )
wikiRepo . Close ( )
}
}
} ( )
} ( )
if ctx . Written ( ) {
return
}
if entry == nil {
if entry == nil {
ctx . Data [ "Title" ] = ctx . Tr ( "repo.wiki" )
ctx . Data [ "Title" ] = ctx . Tr ( "repo.wiki" )
ctx . HTML ( http . StatusOK , tplWikiStart )
ctx . HTML ( http . StatusOK , tplWikiStart )
@ -422,17 +431,15 @@ func WikiRevision(ctx *context.Context) {
}
}
wikiRepo , entry := renderRevisionPage ( ctx )
wikiRepo , entry := renderRevisionPage ( ctx )
if ctx . Written ( ) {
if wikiRepo != nil {
wikiRepo . Close ( )
}
return
}
defer func ( ) {
defer func ( ) {
if wikiRepo != nil {
if wikiRepo != nil {
wikiRepo . Close ( )
wikiRepo . Close ( )
}
}
} ( )
} ( )
if ctx . Written ( ) {
return
}
if entry == nil {
if entry == nil {
ctx . Data [ "Title" ] = ctx . Tr ( "repo.wiki" )
ctx . Data [ "Title" ] = ctx . Tr ( "repo.wiki" )
ctx . HTML ( http . StatusOK , tplWikiStart )
ctx . HTML ( http . StatusOK , tplWikiStart )
@ -469,13 +476,14 @@ func WikiPages(ctx *context.Context) {
}
}
return
return
}
}
defer func ( ) {
entries , err := commit . ListEntries ( )
if err != nil {
if wikiRepo != nil {
if wikiRepo != nil {
wikiRepo . Close ( )
wikiRepo . Close ( )
}
}
} ( )
entries , err := commit . ListEntries ( )
if err != nil {
ctx . ServerError ( "ListEntries" , err )
ctx . ServerError ( "ListEntries" , err )
return
return
}
}
@ -486,10 +494,6 @@ func WikiPages(ctx *context.Context) {
}
}
c , err := wikiRepo . GetCommitByPath ( entry . Name ( ) )
c , err := wikiRepo . GetCommitByPath ( entry . Name ( ) )
if err != nil {
if err != nil {
if wikiRepo != nil {
wikiRepo . Close ( )
}
ctx . ServerError ( "GetCommit" , err )
ctx . ServerError ( "GetCommit" , err )
return
return
}
}
@ -498,10 +502,6 @@ func WikiPages(ctx *context.Context) {
if models . IsErrWikiInvalidFileName ( err ) {
if models . IsErrWikiInvalidFileName ( err ) {
continue
continue
}
}
if wikiRepo != nil {
wikiRepo . Close ( )
}
ctx . ServerError ( "WikiFilenameToName" , err )
ctx . ServerError ( "WikiFilenameToName" , err )
return
return
}
}
@ -513,21 +513,25 @@ func WikiPages(ctx *context.Context) {
}
}
ctx . Data [ "Pages" ] = pages
ctx . Data [ "Pages" ] = pages
defer func ( ) {
if wikiRepo != nil {
wikiRepo . Close ( )
}
} ( )
ctx . HTML ( http . StatusOK , tplWikiPages )
ctx . HTML ( http . StatusOK , tplWikiPages )
}
}
// WikiRaw outputs raw blob requested by user (image for example)
// WikiRaw outputs raw blob requested by user (image for example)
func WikiRaw ( ctx * context . Context ) {
func WikiRaw ( ctx * context . Context ) {
wikiRepo , commit , err := findWikiRepoCommit ( ctx )
wikiRepo , commit , err := findWikiRepoCommit ( ctx )
if err != nil {
defer func ( ) {
if wikiRepo != nil {
if wikiRepo != nil {
wikiRepo . Close ( )
}
} ( )
if err != nil {
if git . IsErrNotExist ( err ) {
ctx . NotFound ( "findEntryForFile" , nil )
return
return
}
}
ctx . ServerError ( "findEntryForfile" , err )
return
}
}
providedPath := ctx . Params ( "*" )
providedPath := ctx . Params ( "*" )
@ -543,9 +547,7 @@ func WikiRaw(ctx *context.Context) {
if entry == nil {
if entry == nil {
// Try to find a wiki page with that name
// Try to find a wiki page with that name
if strings . HasSuffix ( providedPath , ".md" ) {
providedPath = strings . TrimSuffix ( providedPath , ".md" )
providedPath = providedPath [ : len ( providedPath ) - 3 ]
}
wikiPath := wiki_service . NameToFilename ( providedPath )
wikiPath := wiki_service . NameToFilename ( providedPath )
entry , err = findEntryForFile ( commit , wikiPath )
entry , err = findEntryForFile ( commit , wikiPath )