ソフトウェア開発メモ

2009.11.24

category: 未分類

nesasmバグ調査

たまにはバグ調査。

バグ :
特定環境(Linuxなど)でオーバーフローが発生する、もしくはラベルが定義されていないと表示される。

調査:
Win32やMac OS Xではバグが発生しないというのは不可解なので、gdbにて調査してみました。

nesasmのテキスト処理はexpr.cが行うのですが、
テキストからシンボルを得るgetsym()は、

if (isalpha(c) || c == '_' || c == '.' || (isdigit(c) && i >= 1)) {
if (i < SBOLSZ - 1)
symbol[++i] = c;
....


となっており、文字列の長さの調節を行うという意味では正しく処理されていました。

ということで、問題は、この短縮されたシンボルが正しく探せないということにあります。
nesasmでは利便性の為かPascalのような方法で文字列を取り扱っていて、
配列の最初に文字列の長さが格納されます。

そのため、シンボルを一時的に格納するsymbolの配列は、

char symbol[SBOLSZ+1]; /* temporary symbol storage */


となっています。

しかし、シンボルを格納するための構造体は、

typedef struct t_symbol {
...
char name[SBOLSZ];
..
} t_symbol;:


となっていて、symbolをstrcpyで構造体のname配列にそのまま格納した場合、
最後の1文字(フルに使った場合はヌル文字になる)が領域外にコピーされるという事になります。

結果として格納した文字列とsymbolがstrcmpで正しく比較できないなど、
問題が発生することになるようです。

#修正したものは後ほど…

2009.10.20

category: 未分類

ppmck release9 ex5

リリースしました。

MMC5とノイズチャンネルにもEHを対応させてみました。
しかし未テストです。多分動きます…多分。

ファイルはこちらから。

旧ファイル(ex3.5 ex4)もこちらのフォルダに移動しましたので、
リンクの更新をお願いします。

2009.10.18

category: 未分類

ezMML ver 0.4とmckcpp.py

mckcpp.pyとezMML ver 0.4をアップしました。

http://clogging.web.fc2.com/husic/

こちらからどうぞ。

2009.09.30

category: 未分類

HuSIC動画

HuSICの動画を教えてもらいました。



うれしいなー。

HuSICに興味がある人はここに飛ぶといいかもしれない。

2009.09.30

category: 開発

Linux Zaurusクロスコンパイラ環境

Mac OS Xでリナックスザウルスのクロス開発環境を
ほぼ自動的に揃えるスクリプト(*1)を書いてみました。

gcc、g++
Qtopia
SDL-1.2.8

ダウンロードはファイル置き場ことウェブの方からどうぞ。

動作はSnow Leopardで確認しました。

*1 Qtopia環境の構築には以下のファイルが別途必要です。
qtopia-free-1.5.0-1.i386.rpm
qtopia-free-1.5.0-1.src.rpm
(このリンクからググって適当な所から…)

各種パッチはいろいろな方が書かれたものにちょっと手を加えたりしました。
スクリプト自体はMITライセンスで配布していますので再配布や改良、参考などご自由に…。

Copyright ©Just a log. Powered by FC2 Blog. Template by eriraha.

FC2Ad

FC2ブログ