Parameter is null by default. No value is given. Code says it is not null.

tcak via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Apr 9 04:45:30 PDT 2015


I have written a function as follows:

public bool setCookie(
	string name,
	string value,
	long maxAgeInSeconds = long.min,
	string expiresOnGMTDate=null,
	string path=null,
	string domain=null,
	bool secure=false
) shared{

	// if headers are sent already, leave
	if( headersSent ) return false;

	// name cannot be empty
	if( (name is null) || (name.length <= 0) ) return false;

	writeln(
		"Name: ", name,
		"  Max Age: ", maxAgeInSeconds,
		"  Expires null: ", (expiresOnGMTDate == null),
		"  Path equals null: ", (path == null),
		"  Domain null: ", (domain is null)
	);

	return true;
}



Here is the testing code:

responseObject.setCookie( "A", "B" );
auto now = std.datetime.Clock.currTime().toSimpleString();
//writeln("Now |", now, "|");
responseObject.setCookie( "Response Time", now );


Here is the results:

Name: A  Max Age: -9223372036854775808  Expires null: true  Path 
equals null: true  Domain null: true

Name: Response Time  Max Age: -9223372036854775808  Expires null: 
true  Path equals null: false  Domain null: false


I don't know what is happening though, somehow path and domain 
parameters in second use of function are not null even I haven't 
given any value to them.

If I uncomment the "writeln" line in test code, it turns normal. 
I am so much confused right now. What is happening here?


More information about the Digitalmars-d-learn mailing list