On Thu, 09 Apr 2015 11:45:30 +0000 tcak via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote:
> 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? Can you post full example somewhere, this code works ok for me: import std.stdio; import std.datetime; class Response { public bool setCookie( string name, string value, long maxAgeInSeconds = long.min, string expiresOnGMTDate=null, string path=null, string domain=null, bool secure=false ) shared { // 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; } } void main() { auto response = new shared Response(); response.setCookie( "A", "B" ); auto now = std.datetime.Clock.currTime().toSimpleString(); //writeln("Now |", now, "|"); response.setCookie( "Response Time", now ); }