We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
OpenBSD-7.5/amd64上でIchigoJam-BASICのconsole版を動作させ、filesコマンドを何回か実行するとSIGABRTにより動作が必ず停止します。(追記:filesコマンドの実行に限らずスクロールを伴う表示を幾度か行うと必ずSIGABRTが発生するため、実用にならない状態です。:追記ここまで)
これはscreen.hのscreen_scroll()のcase 30:にあるmemcpy4(vram, vram + SCREEN_W, SCREEN_W * (SCREEN_H - 1)); // okにより引き起こされており、/var/log/messageにはApr 16 21:54:14 framboise IchigoJam_BASIC: backwards memcpyというメッセージが残っていました。
memcpy4(vram, vram + SCREEN_W, SCREEN_W * (SCREEN_H - 1)); // ok
Apr 16 21:54:14 framboise IchigoJam_BASIC: backwards memcpy
他環境については知りませんが、OpenBSDは重なった領域に対するmemcpy()を認めていないため、memcpy()ではなくmemmove()を使う必要があります。
システム標準ライブラリのmemcpy()との衝突を回避するためにNO_MEMCPYを定義してichigojam-stddef.h内蔵のmemcpy()を回避しているようですが、むしろこちらを積極的に使うよう以下の修正を行うのは如何でしょうか。
NO_MEMCPY
・ichigojam_stddef.h内蔵のmemcpy()はmemcopy()とする ・memcpy()は使用禁止(全てmemcopy()の呼び出しとする、ext_iot.hは修正が必要) ・NO_MEMCPYは廃止
もちろん、LPC1114版がnewlib由来のmemcpy()を使っていたり速度を重視する場合は、別のアプローチが必要です。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
OpenBSD-7.5/amd64上でIchigoJam-BASICのconsole版を動作させ、filesコマンドを何回か実行するとSIGABRTにより動作が必ず停止します。(追記:filesコマンドの実行に限らずスクロールを伴う表示を幾度か行うと必ずSIGABRTが発生するため、実用にならない状態です。:追記ここまで)
これはscreen.hのscreen_scroll()のcase 30:にある
memcpy4(vram, vram + SCREEN_W, SCREEN_W * (SCREEN_H - 1)); // ok
により引き起こされており、/var/log/messageにはApr 16 21:54:14 framboise IchigoJam_BASIC: backwards memcpy
というメッセージが残っていました。他環境については知りませんが、OpenBSDは重なった領域に対するmemcpy()を認めていないため、memcpy()ではなくmemmove()を使う必要があります。
システム標準ライブラリのmemcpy()との衝突を回避するために
NO_MEMCPY
を定義してichigojam-stddef.h内蔵のmemcpy()を回避しているようですが、むしろこちらを積極的に使うよう以下の修正を行うのは如何でしょうか。・ichigojam_stddef.h内蔵のmemcpy()はmemcopy()とする
・memcpy()は使用禁止(全てmemcopy()の呼び出しとする、ext_iot.hは修正が必要)
・NO_MEMCPYは廃止
もちろん、LPC1114版がnewlib由来のmemcpy()を使っていたり速度を重視する場合は、別のアプローチが必要です。
The text was updated successfully, but these errors were encountered: