Changeset 45 in dev for BasicCompiler64


Ignore:
Timestamp:
Feb 2, 2007, 2:58:14 AM (17 years ago)
Author:
dai_9181
Message:

・オーバーロードが解決できない場合のエラーが表示されないバグを修正。
・DLL関数のByRefパラメータに変数以外の数値を指定すると正常にコンパイルされないバグを修正。

Location:
BasicCompiler64
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler64/CParameter.cpp

    r31 r45  
    391391                StackOffsetOfTempObject[i2] = pobj_sf->push(reg);
    392392
    393                 useTempParameters[i2] = true;
    394                 useTempObject = true;
    395 
    396                 types[i2].type = type;
    397                 types[i2].u.lpIndex = lpVarIndex;
     393                bool result = CheckDifferentType(
     394                    DummyTypeInfo.type,
     395                    DummyTypeInfo.u.lpIndex,
     396                    type,
     397                    lpVarIndex,
     398                    FuncName,
     399                    i2);
     400
     401                if( result ){
     402                    useTempParameters[i2] = true;
     403                    useTempObject = true;
     404
     405                    types[i2].type = type;
     406                    types[i2].u.lpIndex = lpVarIndex;
     407                }
    398408            }
    399409        }
     
    415425            //call destructor
    416426            int i5 = types[i2].u.pobj_Class->DestructorMemberSubIndex;
    417             op_call( types[i2].u.pobj_Class->ppobj_Method[i5]->psi );
     427            if( i5 != -1 ){
     428                op_call( types[i2].u.pobj_Class->ppobj_Method[i5]->psi );
     429            }
    418430
    419431            //メモリを解放する
  • BasicCompiler64/Compile_CallProc.cpp

    r40 r45  
    546546    pobj_parameter->BackupParameter(pdi->ParmNum);
    547547
     548    //一時オブジェクトを生成
     549    pobj_parameter->NewTempParameters( pdi->name,pdi->pParmInfo,pdi->ParmNum,pdi->ParmNum );
     550
    548551    //レジスタ、スタックフレームにセット
    549552    pobj_parameter->SetParameter(pdi->name,pdi->pParmInfo,pdi->ParmNum,pdi->ParmNum);
     
    564567    }*/
    565568
     569    //一時オブジェクトを破棄
     570    pobj_parameter->DeleteTempParameters();
     571
    566572    //スタックフレームに存在する既存のパラメータを復元
    567573    pobj_parameter->RestoreParameter(pdi->ParmNum);
Note: See TracChangeset for help on using the changeset viewer.