2007-04-20 Harri Porten * number_object.cpp: fixed leading-zero loss on toFixed() call by following the spec algorithm properly. Nikolay Pavlov's bug report: http://bugs.kde.org/144115. 2007-03-13 Harri Porten * function.cpp (decodeURI): don't drop last character of unescaped (reserved) sequences. 2007-02-24 Harri Porten * regexp.cpp: gracefully handle incomplete \u sequences in regular expressions the IE way. Fixes the syntax error reported in bug #141731 although the page might be relying on the equally undefined FF way. 2007-02-23 Harri Porten * number_object.cpp: applied patch by Justin that fixes toExponential() calls on negative numbers. Bug #141979. * function.cpp: implemented caller property as requested by bug report #132039 from Edward Rudd. 2007-02-22 Harri Porten * keywords.table: unreserve "class" keyword as it is for FF >= 1.5. Frequent source of errors. 2007-02-20 Harri Porten * string_object.cpp: basic String localeCompare() function 2007-02-17 Harri Porten * lexer.cpp: parse code with null characters in them 2007-02-10 Harri Porten * lexer.cpp: support named function expressions 2006-11-04 Harri Porten * number_object.cpp: Fixed toFixed(n) calls on negative zero. * number_object.cpp: Fixed toPrecision(n) calls on 1.0. 2005-09-17 Harri Porten * date_object.cpp: MSVC equivalent for strncasecmp(). 2005-07-26 Harri Porten * array_object.cpp: the to*String() logic was more involved that I originally thought. Fixes bugs of our and the JSC implementation. 2005-07-24 Harri Porten * array_object.cpp: harmonized toLocaleString implementation with JSC. * date_object.cpp: applied prototype inheritance fixed from JSC. Makes Mozilla's ecma/Date/15.9.5.js test pass. * nodes.cpp: the return-outside-of-function check got duplicated in JSC. Harmonize them. 2005-06-22 Harri Porten * function.cpp: pre-process var declaration in eval() * nodes.cpp: picked up "const" support improvment from JSC * regexp_object.cpp (construct): don't misinterpret an undefined flags parameter. 2005-06-21 Harri Porten * string_object.cpp: fixed length properties of indexOf() and lastIndexOf(). 2005-06-20 Harri Porten * nodes.cpp: JSC patch that helps setting exception details (line number) where they had been missing before. 2005-06-18 Harri Porten * regexp_object.cpp: some regexp property fixes from JSC * regexp_object.cpp: fixed RegExp.prototype name * regexp_object.cpp: allow RegExp.prototype.toString() on the prototype itself (patch from JSC). * array_object.cpp: also do Array length check in constructor like JSC does. * math_object.cpp: fix for Math.max() handling of negative zero from JSC. 2005-06-16 Harri Porten * nodes.cpp: fixed side effect of const declarations on for(;;) variable declarations. 2005-06-11 Harri Porten * date_object.cpp (KRFCDate_parseDate): parse AM and PM. Fixed version of JavaScriptCore patch. (KRFCDate_parseDate): fix time zone parsing that broke due to a compiler warning fix in 2003 (r275385). (KRFCDate_parseDate): case insensitive parsing of GMT and UTC 2005-05-28 Harri Porten * nodes.cpp: fixed override of properties on variable declarations. See bug report #104181. 2005-05-16 Harri Porten * removed remaining use of deprecated Value::isNull(). 2005-04-24 Harri Porten * lexer.cpp (isIdentLetter): allow umlauts, accents as well as greek, cyrillic, thai etc. letters in identifier names. * date_object.cpp (KRFCDate_parseDate): correctly handle large year numbers in "MM/DD/YYYY" formats * date_object.cpp (KRFCDate_parseDate): parse date strings that have no time but a timezone. Like "3/31/2005 GMT". 2005-04-17 Harri Porten * date_object.cpp: parse date strings like "Apr17,2005" * function.cpp: don't produce a null string result on unescape("") (spotted in the JSC ChangeLog) * string_object.cpp: faking toLocalLowerCase and toLocalUpperCase by using their non-localized counter parts 2005-04-16 Harri Porten * function.cpp: escape() u0000 properly (found in JSC) * nodes.cpp: save some cpu cycles on variable declarations * error_object.cpp: made prototype read-only (JSC patch) * string_object.cpp: adopted tag casing and code formatting to JSC-style 2005-02-27 Harri Porten * regexp_object.cpp: fixed RegExp(/regexp/) constructor * regexp_object.cpp: throw exception on invalid regexps 2004-11-07 Harri Porten * date_object.cpp: fix conversion of Date(value) argument, fixed getDay() for out-of-normal-range dates 2004-10-13 Harri Porten * regexp.cpp: support \u escape sequences in regular expressions 2004-10-11 Harri Porten * date_object.cpp: make the Date object work outside of the typical Unix range (1900-2038) by shifting other dates into this range. Might still have some bugs with e.g. leap days but this is a big step forward to ECMA compliancy. * date_object.cpp: fixed cut-off date in Date.setYear() 2004-10-02 Harri Porten * lexer.cpp: parse function expressions with identifier as function argument * date_object.cpp: parse YYYY/MM/DD-style dates 2004-09-30 Harri Porten * math_object.cpp: fixed Math.round() for very large numbers (bug discovered by Pascal) and negative numbers with a .5 decimal. 2004-09-29 Harri Porten * date_object.cpp: don't preset DST when changing parts of the date (most notably the month). Patch by Pascal Letourneau. 2004-06-08 Harri Porten * regexp.cpp (RegExp): check regcomp's return value in non-PCRE builds. Invalid regexps are otherwise reported to cause crashes by Luciano Montanaro. 2004-05-11 Harri Porten * nodes.cpp (processVarDecls): corrected 03-20 change. Non-eval variable declarations always have the DontDelete attribute set. 2004-04-25 Ian Reinhart Geiser * Make Math.random() more random by seeding the generator with the system time. 2004-03-20 Harri Porten * proper support for JavaScript 1.5 "const" keyword 2004-02-23 Harri Porten * keywords.table: for now, make "const" a synonym for "var". Not standardized as of Edition 3 but already supported by other browsers. 2004-02-22 Harri Porten * number_object.cpp: fixed crash if toString() is called on NaN or Inf with a radix != 10. * error_object.cpp: Error constructors are of [[Class]] Function while Error instances are of [[Class]] Error. 2004-02-21 Harri Porten * date_object.cpp: introduced invalidDate constant. Stricter verification of month names. Both coming from JavaScriptCore. 2004-01-25 Harri Porten * nodes.cpp: better error messages when property access fails because of null or undefined reference. In debug builds only to not cause a speed impact. 2003-12-29 Dirk Mueller * create_hash_table: implement string table to reduce amount of relocations and memory usage. * lookup.cpp/.h: adjust. 2003-12-10 Stephan Kulow * kjs/ustring.cpp (UString::toDouble): Separate the "tolerant" parameter into two separate ones: tolerateTrailingJunk and tolerateEmptyString (patch by Apple) 2003-11-25 David Faure * regexp_object.cpp (construct): Add check for (regexp,flags) case and throw TypeError exception in that case, as specified in 15.10.4.1. 2003-11-21 Harri Porten * date_object.cpp: return "Invalid Date" on string conversions of NaN dates (patch by Apple) 2003-11-20 Harri Porten * date_object.cpp: return NaN in getter functions if the time value is NaN itself. 2003-11-18 Harri Porten * reference_list.cpp: patch by Maciej that initializes ReferenceListHeadNode's length field 2003-11-17 Harri Porten * string_object.cpp: handle negative slice() arguments correctly * function_object.cpp: fixed bracketing to ensure null check is done 2003-11-17 Harri Porten * internal.cpp (evaluate): lexical error means parse error * lexer.cpp: removed stderr debug output * object.h: renamed virtual get(), put(), hasProperty() and deleteProperty() overloads accepting an int property to getPropertyByIndex() etc. Not only cleaner C++ that makes compilers happier but also helps to make the code more understandable and safer. 2003-11-16 Harri Porten * array_object.cpp: fixed range error in Array.slice() 2003-11-11 Harri Porten * array_object.cpp: patch from Darin that adds checks for undefined type in compare functions 2003-11-07 Harri Porten * grammar.y: do automatic semicolon insertion after throw statements 2003-11-06 Harri Porten * adapted patch from Maciej that plugs string leaks on parse errors 2003-11-05 Zack Rusin * value.cpp: (operator=): increment reference count on the copying object before dereferencing the currently held value 2003-11-04 David Faure * string_object.cpp: (StringProtoFuncImp::call): Don't do an early return, since that could leak a temporary regexp. Patch from Maciej. 2003-11-02 Harri Porten * nodes.h: list handling fix for CaseClausNode by Darin Adler * grammar.y: added CatchNode and FinallyNode types for greater type safety 2003-10-29 Harri Porten * object.cpp (call): patch from Maciej that makes us back away from the recursion limit once we have hit it * nodes.*: got rid of remaining reverse*() functions 2003-10-26 Harri Porten * date_object.cpp (call): respect optional arguments in set* functions. * ustring.cpp: more and correct use of memcpy() * ustring.*: store length within CString to be able to have null bytes in the string (JavaScriptCore) * added Apple's Identifier::toArrayIndex() and use it in ArrayInstanceImp instead of our range validity checks * do without ArgumentsNode::reverseList() 2003-10-20 Harri Porten * number_object.cpp: rewrote Number.toString(radix) to work with negative numbers, floating point and very large numbers. 2003-10-19 Harri Porten * grammar.y: fixed bitwise XOR and OR expressions 2003-09-30 Harri Porten * lexer.cpp (isWhiteSpace): allow no-break space * date_object.cpp: only use IE getYear() style if explicitly chosen ================= long break again ================================ 2003-02-02 Harri Porten * internal.h: added NumberImp::staticNaN * gave PropertyNode and PropertyValueNode their own types in the parser, ref and deref them as list rather then recursively * turned recursive object literal evaluation into a simple loop 2003-02-01 Harri Porten * internal.cpp (putValue): throw error if reference is invalid * nodes.cpp (evaluateReference): added to allow (i) = 0; ================= long unlogged time span ================================ 2002-06-15 Harri Porten * regexp_object.cpp: made RegExp.prototype visible * adjusted length property of slit and split to what the spec says * some conversions and new calls less 2002-06-08 Harri Porten * string_object.cpp: fixed the leaks introduced by the previous fixes of match() and split(). One has to clean up after each call to RegExp::match(). * added some KJS_DEBUG_MEM ifdef'ed globalClear() functions that clear up static allocations. Makes debugging memory leaks easier as we're down to 0 "still reachable" leaks (apart from STL related issue in the node leak check list). 2002-06-02 Harri Porten * math_object.cpp: fixed handling of NaN in Math.round() 2002-06-01 Harri Porten * string_object.cpp: correct global flag use in match(). Fixed some split() cases. Fixed unlikely leak. * regexp_object.cpp: set 'index' and 'input' properties of RegExp.prototype.exec() and String.prototype.match() result. Made new RegExp() really produce an empty regexp. * array_object.cpp: correct sorting for 'undefined' properties 2001-01-04 Harri Porten * ustring.h: pack bytes to avoid alignment problems (ARM) reported by Stefan Hanske * nodes.cpp: typeof fix by Emmeran Seehuber * nodes.cpp: fixed order of function declaration proccessing 2000-12-18 Harri Porten * string_object.cpp: fixed out-of-bounds error in fromCharCode() 2000-12-11 Harri Porten * regexp.h: compile fix for buggy libc * ustring.cpp: format string conversion of numbers with %g 2000-12-10 Harri Porten * lexer.cpp: parsing != was broken, added \v escape in strings, fixed "\u" and "\x" and \x with non hex chars following. * nodes.cpp: implemented <<=, >>=, >>>=, &=, ^=, |= and %= * internal.cpp: create error message including line no on parse errors