commit 15a67b7bef9b897415b3b9a05b9d5aa56f45c14d
parent 7bea1076086418198280a66e35b55277edc90ee6
Author: kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>
Date: Mon, 26 Sep 2022 09:50:14 +0100
[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>
Diffstat:
1 file changed, 7 insertions(+), 19 deletions(-)
diff --git a/internal/federation/dereferencing/thread.go b/internal/federation/dereferencing/thread.go
@@ -152,8 +152,6 @@ func (d *deref) dereferenceStatusDescendants(ctx context.Context, username strin
statusable ap.Statusable
page ap.CollectionPageable
itemIter vocab.ActivityStreamsItemsPropertyIterator
- iterLen int
- iterIdx int
}
var (
@@ -240,22 +238,22 @@ stackLoop:
continue stackLoop
}
- // Check this page contains any items...
- if current.iterLen = items.Len(); current.iterLen == 0 {
- continue stackLoop
- }
-
// Start off the item iterator
current.itemIter = items.Begin()
- current.iterIdx = 0
+ if current.itemIter == nil {
+ continue stackLoop
+ }
}
itemLoop:
- for ; current.iterIdx < current.iterLen; current.iterIdx++ {
+ for {
var itemIRI *url.URL
// Get next item iterator object
current.itemIter = current.itemIter.Next()
+ if current.itemIter == nil {
+ break itemLoop
+ }
if iri := current.itemIter.GetIRI(); iri != nil {
// Item is already an IRI type
@@ -284,13 +282,6 @@ stackLoop:
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
stack = append(stack, current, &frame{
statusIRI: itemIRI,
@@ -301,9 +292,6 @@ stackLoop:
continue stackLoop
}
- // Item iterator is done
- current.itemIter = nil
-
// Get the current page's "next" property
pageNext := current.page.GetActivityStreamsNext()
if pageNext == nil {