r434にてAssertion failedが発生
GoogleCodeExporter opened this issue · comments
はじめまして、Xtalを使わせていただいているin60jpと申しま�
��。
Xtal
r434において、以下のような単純なコードを実行するとAsserti
on failedが発生します。
(r434以外での検証はしていないので、ほかのバージョンで�
��発生する
可能性はあります。)
//Xtal Script Begin
a: 0;
b: 0;
c: 0;
d: 0;
//Xtal Script End
エラーメッセージ:
Assertion failed: 0<=i && (uint_t)i<size_, file c:\x3d\xtal\xtal-language\src\xt
al\xtal_array.h, line 117
環境:
WinVistaSP2
VC++ 2010 Express
(但しコンパイラはVC++ 2008 Expressのものを使用しています
VC++ 2010のコンパイラでは正常にビルドできないようです)
ローカル変数の定義が4つ以上になるとエラーが出るようで�
��たとえば以下のような
コードはエラーになりません。
a: 0;
b: 0;
c: 0;
ローカル変数の代入時に配列の範囲外にアクセスしてしま��
�ているようですが、
元の原因がどこにあるかまでは分かりませんでした。
とりあえず以下のように応急処置として配列を強制的に拡��
�することで
正常に作動するようです。
(あまり良い処置とは言えませんが...)
Index: xtal_array.h
===================================================================
--- xtal_array.h (revision 434)
+++ xtal_array.h (working copy)
@@ -114,6 +114,10 @@
* \brief i番目の要素を設定する
*/
void set_at(int_t i, const AnyPtr& v){
+ //エラー回避
+ if ((uint_t)i>=size_){
+ resize(i + 1);
+ }
XTAL_ASSERT(0<=i && (uint_t)i<size_);
values_[i] = v;
}
C++初心者のためこれ以上のことは分かりませんが
検証をよろしくお願いします。
Original issue reported on code.google.com by in6...@gmail.com
on 1 Aug 2010 at 3:42
追記:
ixで一行ずつ入力するとエラーは起きませんが、
スクリプトファイルをloadするとエラーが発生するため、
おそらくファイルローカル変数周りの問題と思われます。
Original comment by in6...@gmail.com
on 1 Aug 2010 at 10:57
Original comment by dof...@gmail.com
on 22 May 2012 at 6:40
- Changed state: Fixed