diff --git a/logd/FlushCommand.cpp b/logd/FlushCommand.cpp
index b848fd0..f6f8cb8 100644
--- a/logd/FlushCommand.cpp
+++ b/logd/FlushCommand.cpp
@@ -63,7 +63,7 @@
     }
 
     if (it == times.end()) {
-        /* Create LogTimeEntry in notifyNewLog() ? */
+        // Create LogTimeEntry in notifyNewLog() ?
         if (mTail == (unsigned long) -1) {
             LogTimeEntry::unlock();
             return;
@@ -74,7 +74,7 @@
 
     client->incRef();
 
-    /* release client and entry reference counts once done */
+    // release client and entry reference counts once done
     entry->startReader_Locked();
     LogTimeEntry::unlock();
 }
diff --git a/logd/LogBuffer.cpp b/logd/LogBuffer.cpp
index 64d5cc2..7340a36 100644
--- a/logd/LogBuffer.cpp
+++ b/logd/LogBuffer.cpp
@@ -52,11 +52,12 @@
     LogBufferElementCollection::iterator it = mLogElements.end();
     LogBufferElementCollection::iterator last = it;
     while (--it != mLogElements.begin()) {
-        if ((*it)->getRealTime() <= elem->getRealTime()) {
+        if ((*it)->getRealTime() <= realtime) {
             break;
         }
         last = it;
     }
+
     if (last == mLogElements.end()) {
         mLogElements.push_back(elem);
     } else {
@@ -83,7 +84,7 @@
         }
 
         if (end_always
-         || (end_set && (end >= (*last)->getMonotonicTime()))) {
+                || (end_set && (end >= (*last)->getMonotonicTime()))) {
             mLogElements.push_back(elem);
         } else {
             mLogElements.insert(last,elem);
diff --git a/logd/LogCommand.cpp b/logd/LogCommand.cpp
index ec8365a..6ccc93e 100644
--- a/logd/LogCommand.cpp
+++ b/logd/LogCommand.cpp
@@ -16,6 +16,6 @@
 
 #include "LogCommand.h"
 
-LogCommand::LogCommand(const char *cmd) :
-              FrameworkCommand(cmd)  {
+LogCommand::LogCommand(const char *cmd)
+        : FrameworkCommand(cmd) {
 }
diff --git a/logd/LogTimes.cpp b/logd/LogTimes.cpp
index d6d4e93..67cc65e 100644
--- a/logd/LogTimes.cpp
+++ b/logd/LogTimes.cpp
@@ -160,7 +160,7 @@
     }
 
     if ((!me->mPid || (me->mPid == element->getPid()))
-     && (me->mLogMask & (1 << element->getLogId()))) {
+            && (me->mLogMask & (1 << element->getLogId()))) {
         ++me->mCount;
     }
 
diff --git a/logd/LogTimes.h b/logd/LogTimes.h
index ac52db2..cb6f566 100644
--- a/logd/LogTimes.h
+++ b/logd/LogTimes.h
@@ -59,16 +59,14 @@
 
     void startReader_Locked(void);
 
-    bool runningReader_Locked(void) const
-    {
+    bool runningReader_Locked(void) const {
         return threadRunning || mRelease || mError || mNonBlock;
     }
     void triggerReader_Locked(void) { threadTriggered = true; }
     void triggerSkip_Locked(unsigned int skip) { skipAhead = skip; }
 
     // Called after LogTimeEntry removed from list, lock implicitly held
-    void release_Locked(void)
-    {
+    void release_Locked(void) {
         mRelease = true;
         if (mRefCount || threadRunning) {
             return;
@@ -89,8 +87,7 @@
 
     bool owned_Locked(void) const { return mRefCount != 0; }
 
-    void decRef_Locked(void)
-    {
+    void decRef_Locked(void) {
         if ((mRefCount && --mRefCount) || !mRelease || threadRunning) {
             return;
         }
