]> err.no Git - sope/commitdiff
fixed duplicate -awake
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Fri, 4 Mar 2005 14:07:57 +0000 (14:07 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Fri, 4 Mar 2005 14:07:57 +0000 (14:07 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@614 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-appserver/NGObjWeb/ChangeLog
sope-appserver/NGObjWeb/Version
sope-appserver/NGObjWeb/WOComponent.m

index df21ebba23519c82a789be06492bd43b352ce057..5214aff7314f2b965e37d30640b6fe5799ea7fd0 100644 (file)
@@ -1,7 +1,12 @@
+2005-03-04  Helge Hess  <helge.hess@opengroupware.org>
+
+       * WOComponent.m: protect component against duplicate -awake in the
+         same context as suggested by Stephane (v4.5.124)
+
 2005-03-03  Helge Hess  <helge.hess@opengroupware.org>
 
        * DynamicElements/WOMetaRefresh.m: added support for 'seconds' binding
-         as available in WO (v4.5.123)
+         as available in WO and suggested by Stephane (v4.5.123)
 
 2005-03-01  Helge Hess  <helge.hess@opengroupware.org>
 
index cd961881daa264ee58b9491aab8aca60101399ab..b4b46d8035ae7adeb359b68bb0013e16bbef24fe 100644 (file)
@@ -1,6 +1,6 @@
 # version file
 
-SUBMINOR_VERSION:=123
+SUBMINOR_VERSION:=124
 
 # v4.5.122 requires libNGExtensions v4.5.153
 # v4.5.91  requires libNGExtensions v4.5.134
index a21d60feca8122608294768e73cd29c14e18263e..ab5678890ab2892773a3df1a8fea3e0cd3e9a7ed 100644 (file)
@@ -135,7 +135,7 @@ static BOOL  wakeupPageOnCreation              = NO;
 - (id)initWithContext:(WOContext *)_ctx {
   [self _setContext:_ctx];
   if ((self = [self init])) {
-    if (self->context)
+    if (self->context != nil)
       [self ensureAwakeInContext:self->context];
     else {
       [self warnWithFormat:
@@ -268,7 +268,19 @@ static inline id _getExtraVar(WOComponent *self, NSString *_key) {
   if (debugComponentAwake) 
     [self debugWithFormat:@"0x%08X ensureAwakeInContext:0x%08X", self, _ctx];
   
-  if (self->context == nil)     [self _setContext:_ctx];
+  /* sanity check */
+
+  if (self->componentFlags.isAwake) {
+    if (self->context == _ctx) {
+      if (debugComponentAwake) 
+       [self debugWithFormat:@"0x%08X already awake:0x%08X", self, _ctx];
+      return;
+    }
+  }
+  
+  /* setup globals */
+  
+  if (self->context     == nil) [self _setContext:_ctx];
   if (self->application == nil) self->application = [_ctx application];
   
   if ((self->session == nil) && [_ctx hasSession])
@@ -283,7 +295,7 @@ static inline id _getExtraVar(WOComponent *self, NSString *_key) {
     WOComponent  *child;
     
     children = [self->subcomponents objectEnumerator];
-    while ((child = [children nextObject]))
+    while ((child = [children nextObject]) != nil)
       [child _awakeWithContext:_ctx];
   }