fix: update write pointer after Realloc in freezeArrayBuffer#5
Merged
kg68k merged 1 commit intokg68k:mainfrom Nov 26, 2025
Merged
fix: update write pointer after Realloc in freezeArrayBuffer#5kg68k merged 1 commit intokg68k:mainfrom
kg68k merged 1 commit intokg68k:mainfrom
Conversation
Owner
|
なるほど、
ということですね。 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
macOS上でビルドしたdisを実行すると"ヒープメモリが不足しています。"としてエラー終了することがありました。
もとのアセンブリ言語のソースコードは
.dc.w $ff00のみの簡単なものです。調べましたところ、
freezeArrayBuffer()にてRealloc()経由で呼び出されたrealloc()が再配置されたメモリブロックを返した際にab->bufferとab->writeの位置関係が逆転することがあり、その結果size_t size = (char*)ab->write - (char*)ab->buffer;で計算された大きな値がRealloc()に渡りエラー終了する、という流れのようです。すでに
secureArrayBufferCapacity()でab->bufferとab->writeが一緒に更新されてましたので、同じようにfreezeArrayBuffer()においてもab->bufferとab->writeを一緒に更新するように修正しました。手元では問題なく動くようになりましたが、この修正で問題ないでしょうか?