merge upstream changes
authorDan Mills <thunder@mozilla.com>
Fri, 05 Dec 2008 00:42:11 -0800
changeset 45081 3a765c3738ccd6262483cc9f0f7491e11a054120
parent 45080 b6f872c3030dda1bec4a2a9b7f4bd2ee8045a927 (current diff)
parent 45079 bccc6265fac2472f01c189c0b68e4ef68a2175b3 (diff)
child 45082 53b4d5b8b9c3540028fae78efd19f74880b0f66f
push idunknown
push userunknown
push dateunknown
merge upstream changes
--- a/services/crypto/Makefile
+++ b/services/crypto/Makefile
@@ -210,21 +210,25 @@ ifeq ($(os), Darwin)
                  -force_cpusubtype_ALL \
                  $(libdirs) $(libs)  
 else
 ifeq ($(os), Linux)
   libdirs := $(patsubst %,-L%,$(libdirs))
   libs := $(patsubst %,-l%,$(libs))
   cppflags += -pipe -Os \
               -fPIC -fno-rtti -fno-exceptions -fno-strict-aliasing \
-              -fno-common -fshort-wchar -pthread \
+              -fno-common -pthread \
               -Wall -Wconversion -Wpointer-arith -Woverloaded-virtual -Wsynth \
               -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wcast-align \
               -Wno-long-long \
               -include xpcom-config.h $(headers)
+ifeq ($(arch), x86)
+  cppflags += -fshort-wchar
+else
+endif
   ldflags += -pthread -pipe -DMOZILLA_STRICT_API \
              -Wl,-dead_strip \
              -Wl,-exported_symbol \
              -Wl,-z,defs -Wl,-h,WeaveCrypto.so \
              -Wl,-rpath-link,$(sdkdir)/bin \
              $(sdkdir)/lib/libxpcomglue_s.a \
              $(libdirs) $(libs)
 else
new file mode 100755
index 0000000000000000000000000000000000000000..0259efa9c6626898ec69c1abcc980b723f688f0b
GIT binary patch
literal 56986
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
--- a/services/sync/modules/log4moz.js
+++ b/services/sync/modules/log4moz.js
@@ -278,34 +278,36 @@ LoggerRepository.prototype = {
   //  this._rootLogger = logger;
   //},
 
   _updateParents: function LogRep__updateParents(name) {
     let pieces = name.split('.');
     let cur, parent;
 
     // find the closest parent
-    for (let i = 0; i < pieces.length; i++) {
+    // don't test for the logger name itself, as there's a chance it's already
+    // there in this._loggers
+    for (let i = 0; i < pieces.length - 1; i++) {
       if (cur)
         cur += '.' + pieces[i];
       else
         cur = pieces[i];
       if (cur in this._loggers)
         parent = cur;
     }
 
-    // if they are the same it has no parent
-    if (parent == name)
+    // if we didn't assign a parent above, there is no parent
+    if (!parent)
       this._loggers[name].parent = this.rootLogger;
     else
       this._loggers[name].parent = this._loggers[parent];
 
     // trigger updates for any possible descendants of this logger
     for (let logger in this._loggers) {
-      if (logger != name && name.indexOf(logger) == 0)
+      if (logger != name && logger.indexOf(name) == 0)
         this._updateParents(logger);
     }
   },
 
   getLogger: function LogRep_getLogger(name) {
     if (!name)
       name = this.getLogger.caller.name;
     if (name in this._loggers)
--- a/services/sync/tests/unit/test_log4moz.js
+++ b/services/sync/tests/unit/test_log4moz.js
@@ -19,9 +19,27 @@ function run_test() {
   appender.level = Log4Moz.Level.Info;
   log.addAppender(appender);
   log.info("info test");
   log.debug("this should be logged but not appended.");
 
   do_check_eq(appender.messages.length, 1);
   do_check_true(appender.messages[0].indexOf("info test") > 0);
   do_check_true(appender.messages[0].indexOf("INFO") > 0);
+
+  // Test - check whether parenting is correct
+  let grandparentLog = Log4Moz.repository.getLogger("grandparent");
+  let childLog = Log4Moz.repository.getLogger("grandparent.parent.child");
+  do_check_eq(childLog.parent.name, "grandparent");
+
+  let parentLog = Log4Moz.repository.getLogger("grandparent.parent");
+  do_check_eq(childLog.parent.name, "grandparent.parent");
+
+  // Test - check that appends are exactly in scope
+  let gpAppender = new MockAppender(new Log4Moz.BasicFormatter());
+  gpAppender.level = Log4Moz.Level.Info;
+  grandparentLog.addAppender(gpAppender);
+  childLog.info("child info test");
+  log.info("this shouldn't show up in gpAppender");
+
+  do_check_eq(gpAppender.messages.length, 1);
+  do_check_true(gpAppender.messages[0].indexOf("child info test") > 0);
 }