summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/federation/dereferencing/thread.go26
1 files changed, 7 insertions, 19 deletions
diff --git a/internal/federation/dereferencing/thread.go b/internal/federation/dereferencing/thread.go
index c0a758ee3..34955cee8 100644
--- 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 {