[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdelibs/kjs
From:       Harri Porten <porten () kde ! org>
Date:       2002-12-19 11:04:02
[Download RAW message or body]

CVS commit by porten: 

throw RangeError exception on invalid array lenghts


  M +12 -2     array_object.cpp   1.43


--- kdelibs/kjs/array_object.cpp  #1.42:1.43
@@ -56,4 +56,9 @@ void ArrayInstanceImp::put(ExecState *ex
       unsigned int oldLen = len.toUInt32(exec);
       unsigned int newLen = value.toUInt32(exec);
+      if (value.toNumber(exec) != double(newLen)) {
+        Object err = Error::create(exec, RangeError, "Invalid array length.");
+        exec->setException(err);
+        return;
+      }
       // shrink array
       for (unsigned int u = newLen; u < oldLen; u++) {
@@ -515,7 +520,12 @@ Object ArrayObjectImp::construct(ExecSta
   ListIterator it = args.begin();
   // a single argument might denote the array size
-  if (args.size() == 1 && it->type() == NumberType)
+  if (args.size() == 1 && it->type() == NumberType) {
     len = it->toUInt32(exec);
-  else {
+    if (it->toNumber(exec) != double(len)) {
+      Object err = Error::create(exec, RangeError, "Invalid array length.");
+      exec->setException(err);
+      return err;
+    }
+  } else {
     // initialize array
     len = args.size();


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic