• Create Account

## Undefined variable values

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

7 replies to this topic

### #1abrken  Members

130
Like
0Likes
Like

Posted 09 October 2004 - 08:18 PM

Hello, First : This is not a bug ! Well, I've done upgrading to 1.9.2 and running my application in debug mode I have found a different behaviour than in release mode. So I have looked at my scripts and found that the problem came from there. In my script I wasn't initializing a variable, and found that in release mode my uninitialized var has magicaly the value that make the script run, but in debug mode, the value wasn't magicaly the same. Invastigating in the scripts beeing called before the one that cause the problem, I have found that the magic value was assigned to a var (same type, same name) in release mode, but not in debug mode. Also if I insert a var declaration, the magic value is not assigned. example:
void firstfunc()
{
bool bWhat;
int iVar;

...

iVar = 50;
}

void secondfunc()
{
CClass theClass;
int iVar;
// if typed : int iDummy, iVar then iVar do NOT get the value

// In release mode iVar = 50 in debug mode iVar = undefined value
...

}

then in C++ I call firstfunc and then, secondfunc

I think this is because of a stack beeing shared between functions ? The question is : How/Why in the second function the variable get initialized ? I prefer that variables are unitialized because it can lead to think that a function works correctly, but it's not, it's just about magic ! AbrKen.

### #2Andreas Jonsson  Moderators

4453
Like
0Likes
Like

Posted 10 October 2004 - 01:46 AM

What's happening is that the stack is reused, and in your second function the variable just happens to be on the same location as in the first function. This could have happened in C++ as well.

Variables are not initialized automatically, except for pointers that are set to 0.

Didn't the compiler warn that the variable wasn't initialized before use?

AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

### #3abrken  Members

130
Like
0Likes
Like

Posted 10 October 2004 - 08:21 PM

Quote:
 Original post by WitchLordDidn't the compiler warn that the variable wasn't initialized before use?

No, and this is a modification of teststdcall4args that will show you :
class CMyOut : public 	COutStream{public :	virtual void Write(const char *text) {printf("%s\n", text);};};bool TestStdcall4Args(){	bool ret = false;	CMyOut outStr;	asIScriptEngine *engine = asCreateScriptEngine(ANGELSCRIPT_VERSION);	engine->RegisterGlobalFunction("void cfunction(int, float, double, int)", asFUNCTION(cfunction), asCALL_STDCALL);	engine->ExecuteString(0, "int i1; cfunction(i1, 1.92f, 3.88, 97)", &outStr, 0);		if (!called) {		printf("\n%s: cfunction not called from script\n\n", TESTNAME);		ret = true;	} else if (!testVal) {		printf("\n%s: testVal is not of expected value. Got (%d, %f, %f, %c), expected (%d, %f, %f, %c)\n\n", TESTNAME, t1, t2, t3, t4, 10, 1.92f, 3.88, 97);		ret = true;	}	engine->Release();	engine = NULL;	return ret;}

this result in only the test to fail because i1 is not initialized to the correct value (10).

### #4Andreas Jonsson  Moderators

4453
Like
0Likes
Like

Posted 11 October 2004 - 01:31 PM

I'll fix this as soon as possible. Thanks for sending me a test case that reproduces the problem.
AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

### #5Andreas Jonsson  Moderators

4453
Like
0Likes
Like

Posted 11 October 2004 - 01:31 PM

I'll fix this as soon as possible. Thanks for sending me a test case that reproduces the problem.
AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

### #6abrken  Members

130
Like
0Likes
Like

Posted 11 October 2004 - 08:55 PM

Thank's !

### #7abrken  Members

130
Like
0Likes
Like

Posted 12 October 2004 - 08:07 PM

1.9.2a not only solved the problem, but show me that I was using undefined variable values in other scripts !
Thank's

### #8Andreas Jonsson  Moderators

4453
Like
0Likes
Like

Posted 13 October 2004 - 01:59 AM

Excellent. [smile]

Thanks for confirming the fix.
AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.