mirror of
1
Fork 0

[bugfix] more nil checks baybeeeeeeeeeeeeeeeeeeee (#854)

* more nil checks baybeeeeeeeeeeeeeeeeeeee

Signed-off-by: kim <grufwub@gmail.com>

* move item nil checks

Signed-off-by: kim <grufwub@gmail.com>

Signed-off-by: kim <grufwub@gmail.com>
This commit is contained in:
kim 2022-09-26 09:50:14 +01:00 committed by GitHub
parent 7bea107608
commit 15a67b7bef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 19 deletions

View File

@ -152,8 +152,6 @@ func (d *deref) dereferenceStatusDescendants(ctx context.Context, username strin
statusable ap.Statusable statusable ap.Statusable
page ap.CollectionPageable page ap.CollectionPageable
itemIter vocab.ActivityStreamsItemsPropertyIterator itemIter vocab.ActivityStreamsItemsPropertyIterator
iterLen int
iterIdx int
} }
var ( var (
@ -240,22 +238,22 @@ stackLoop:
continue stackLoop continue stackLoop
} }
// Check this page contains any items...
if current.iterLen = items.Len(); current.iterLen == 0 {
continue stackLoop
}
// Start off the item iterator // Start off the item iterator
current.itemIter = items.Begin() current.itemIter = items.Begin()
current.iterIdx = 0 if current.itemIter == nil {
continue stackLoop
}
} }
itemLoop: itemLoop:
for ; current.iterIdx < current.iterLen; current.iterIdx++ { for {
var itemIRI *url.URL var itemIRI *url.URL
// Get next item iterator object // Get next item iterator object
current.itemIter = current.itemIter.Next() current.itemIter = current.itemIter.Next()
if current.itemIter == nil {
break itemLoop
}
if iri := current.itemIter.GetIRI(); iri != nil { if iri := current.itemIter.GetIRI(); iri != nil {
// Item is already an IRI type // Item is already an IRI type
@ -284,13 +282,6 @@ stackLoop:
continue itemLoop continue itemLoop
} }
// Iter past this item. Normally this would be
// handled by the third clause of the itemLoop's
// embedded range checking, but at the bottom of this
// loop since we found a new status we circle back to
// the beginning of the stackLoop and skip iteration.
current.iterIdx++
// Put current and next frame at top of stack // Put current and next frame at top of stack
stack = append(stack, current, &frame{ stack = append(stack, current, &frame{
statusIRI: itemIRI, statusIRI: itemIRI,
@ -301,9 +292,6 @@ stackLoop:
continue stackLoop continue stackLoop
} }
// Item iterator is done
current.itemIter = nil
// Get the current page's "next" property // Get the current page's "next" property
pageNext := current.page.GetActivityStreamsNext() pageNext := current.page.GetActivityStreamsNext()
if pageNext == nil { if pageNext == nil {