Captured slideshow pass overwrites the route path, aborting compose with a rebind() TypeError
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
キャプチャしたスライドショーのパスにある CapturedDialogProjector.php から始め、特に $path を再利用する内側のループと、その後の $retired[$path] および $bindings->rebind($files, $path) の呼び出しを確認してください。ページの各反復でルートパスが固定されるように、内側の変数名を変更してください。メディアが見つからない場合も既存の $missing の動作で引き続き処理され、compose が rebind() の TypeError を起こさずに完了し、誤ったファイルキーが記録されなければ完了です。
索引モデルが issue の本文から書いたものです。
説明
Summary
In CapturedDialogProjector's captured-slideshow pass (added in #3811), the outer loop variable $path holds the route's HTML file path. Two inner loops reuse the same name and overwrite it:
$path = $assets[$media['asset'] ?? ''] ?? null;sets it tonullwhen a frame's media asset was not captured.foreach (array_slice($paths, $used) as $path)sets it to a relative image path.
After the page changes, the pass calls $retired[$path] = … and $bindings->rebind($files, $path) with the overwritten value:
nullaborts the whole compose:TypeError: ScriptOccurrenceBindings::rebind(): Argument #2 ($sourcePath) must be of type string, null given(CapturedDialogProjector.php:218).- An image path silently rebinds scripts and records retired runtimes under the wrong file key.
Reproduction
A real Square Online store (an import from www.braveyogimedicinals.com) fails with the TypeError above on php-transformer v0.45.312 (SSI v1.33.426, DLA v0.33.168). Any page with a captured carousel/slideshow component whose frame references a media asset that is missing from the asset map, alongside a frame that still gets materialized, reproduces the bug.
Expected
The route file path stays fixed for the whole page iteration. A frame with an uncaptured asset is reported as missing (existing $missing behavior), and compose completes.
Fix
Rename the inner variables (for example $assetPath and $extraPath) so the outer $path is never reassigned.
AI disclosure: Claude Opus via Pi (Franklin agent) traced this from the failing import and wrote the issue.
- 主要言語
- PHP
- スター
- 25
- フォーク
- 3
- 平均マージ
- 2時間 23分
- マージ済み PR(30日)
- 942
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
Automattic/blocks-engine のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
Automattic/blocks-engine#4943 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
Automattic/blocks-engine#4942 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
Automattic/blocks-engine#4921 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
Automattic/blocks-engine#775 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
Automattic/blocks-engine#5013 ·
メンテナーはふだん 1 日以内に返信
Automattic/blocks-engine の issue をすべて見る
似ている issue
-
enhancement priority Sales
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
novalo-dev/Prestashop-MCP-Server#201 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
web-token/jwt-framework#757 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
Include flows spanning the full report time window対応中かも @somethingwithproof が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
Cacti/plugin_flowview#306 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
wintercms/wn-sitemap-plugin#31 · コメント 2 件 ·