* make sure headGitRepo is closed on err too
* refactor
* Fix git.Blob.DataAsync(): exec cancel since we already read all bytes (close pipe since we return a NopCloser)
if size < 4096 {
bs, err := ioutil.ReadAll(io.LimitReader(rd, size))
+ defer cancel()
if err != nil {
- cancel()
return nil, err
}
_, err = rd.Discard(1)
// Close implements io.Closer
func (b *blobReader) Close() error {
+ defer b.cancel()
if b.n > 0 {
for b.n > math.MaxInt32 {
n, err := b.rd.Discard(math.MaxInt32)
b.n -= int64(n)
if err != nil {
- b.cancel()
return err
}
b.n -= math.MaxInt32
n, err := b.rd.Discard(int(b.n))
b.n -= int64(n)
if err != nil {
- b.cancel()
return err
}
}
if b.n == 0 {
_, err := b.rd.Discard(1)
b.n--
- b.cancel()
return err
}
return nil
headGitRepo.Close()
}
}()
-
if ctx.Written() {
return
}
}
handleTeamMentions(ctx)
- if ctx.Written() {
- return
- }
}
func retrieveProjects(ctx *context.Context, repo *models.Repository) {
)
headUser, headRepo, headGitRepo, prInfo, baseBranch, headBranch := ParseCompareInfo(ctx)
+ defer func() {
+ if headGitRepo != nil {
+ headGitRepo.Close()
+ }
+ }()
if ctx.Written() {
return
}
- defer headGitRepo.Close()
labelIDs, assigneeIDs, milestoneID, _ := ValidateRepoMetas(ctx, *form, true)
if ctx.Written() {