diff --git a/mirai-core/src/commonMain/kotlin/contact/SendMessageHandler.kt b/mirai-core/src/commonMain/kotlin/contact/SendMessageHandler.kt
index 868c6c69c..a1d93448f 100644
--- a/mirai-core/src/commonMain/kotlin/contact/SendMessageHandler.kt
+++ b/mirai-core/src/commonMain/kotlin/contact/SendMessageHandler.kt
@@ -314,12 +314,9 @@ internal suspend fun <C : Contact> SendMessageHandler<C>.transformSpecialMessage
                     "ForwardMessage allows up to 200 nodes, but found ${forward.nodeList.size}"
                 )
             }
-            val tmp = ArrayList<SingleMessage>(
-                forward.nodeList.sumOf { it.messageChain.size }
-            )
-            forward.nodeList.forEach { tmp.addAll(it.messageChain) }
-
-            tmp.verifyLength(forward, contact)
+            sequence {
+                forward.nodeList.forEach { yieldAll(it.messageChain) }
+            }.asIterable().verifyLength(forward, contact)
         }
 
         val resId = getMiraiImpl().uploadMessageHighway(