jamesu / xtal-language

Automatically exported from code.google.com/p/xtal-language

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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