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

List:       kde-commits
Subject:    kdenonbeta/kdom/ecma
From:       Nikolas Zimmermann <wildfox () kde ! org>
Date:       2005-08-22 11:51:22
Message-ID: 1124711482.955662.27710.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 451998 by wildfox:

Take DOMStringImpl ptr params in createEventListener...


 M  +20 -5     Ecma.cpp  
 M  +1 -2      Ecma.h  


--- trunk/kdenonbeta/kdom/ecma/Ecma.cpp #451997:451998
@@ -242,19 +242,30 @@
     return i;
 }
 
-EventListenerImpl *Ecma::createEventListener(const DOMString &type, const DOMString \
&jsCode) +EventListenerImpl *Ecma::createEventListener(DOMStringImpl *type, \
DOMStringImpl *jsCode)  {    
+	if(!type || !jsCode)
+		return 0;
+
+	type->ref();
+	jsCode->ref();
+
     KJS::Interpreter::lock();
 
     // We probably deal with sth. like onload="alert('hi');' ...
-    DOMString internalType = DOMString("[KDOM] - ") + jsCode;
+    DOMString internalType = DOMString("[KDOM] - ") + DOMString(jsCode);
     
     QPtrDictIterator<EventListenerImpl> it(d->eventListeners);
     for( ; it.current(); ++it)
     {
         EventListenerImpl *current = it.current();
         if(DOMString(current->internalType()) == internalType)
+		{
+			type->deref();
+			jsCode->deref();
+
             return current;
+		}
     }
     
     static KJS::String eventString("event");
@@ -264,7 +275,7 @@
     
     KJS::List args;
     args.append(eventString);
-    args.append(KJS::String(jsCode.string()));
+    args.append(KJS::String(jsCode->string()));
 
     KJS::Object obj = constr.construct(exec, args);
     if(exec->hadException())
@@ -284,9 +295,13 @@
         addEventListener(i, static_cast<KJS::ObjectImp *>(obj.imp()));
     }
     else
-        kdError() << "Unable to create event listener object for event type \"" << \
type << "\"" << endl; +        kdError() << "Unable to create event listener object \
for event type \"" << type->string() << "\"" << endl;  
-    KJS::Interpreter::unlock();    
+    KJS::Interpreter::unlock();
+
+	type->deref();
+	jsCode->deref();
+
     return i;
 }
 
--- trunk/kdenonbeta/kdom/ecma/Ecma.h #451997:451998
@@ -47,7 +47,6 @@
     class CSSValueImpl;
 
     class EventImpl;
-    class DOMString;
     class CDFInterface;
     class DocumentImpl;
     class DOMStringImpl;
@@ -72,7 +71,7 @@
         // Internal, used to handle event listeners
         KJS::Object ecmaListenerToObject(KJS::ExecState *exec, const KJS::Value \
&listener);  
-        EventListenerImpl *createEventListener(const DOMString &type, const \
DOMString &jsCode); +        EventListenerImpl *createEventListener(DOMStringImpl \
                *type, DOMStringImpl *jsCode);
         EventListenerImpl *createEventListener(KJS::ExecState *exec, const \
                KJS::Value &listener);
         EventListenerImpl *findEventListener(KJS::ExecState *exec, const KJS::Value \
&listener);  


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

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