shithub: openh264

Download patch

ref: 75c941a836d67977beac80fa05bc626f6dbdcc85
parent: 9c5402837e889a18e8fbe04d5efc50f32d7cc68b
parent: c4e1d2bbb8fdb0078ce85bd5982bbb97515b394d
author: Licai Guo <[email protected]>
date: Tue Apr 22 12:41:44 EDT 2014

Merge pull request #724 from mstorsjo/string-cleanup

Unify return values from Wels*Snprintf and simplify calling code

--- a/codec/common/src/crt_util_safe_x.cpp
+++ b/codec/common/src/crt_util_safe_x.cpp
@@ -68,6 +68,8 @@
   va_start (pArgPtr, kpFormat);
 
   iRc = vsnprintf_s (pBuffer, iSizeOfBuffer, _TRUNCATE, kpFormat, pArgPtr);
+  if (iRc < 0)
+    iRc = iSizeOfBuffer;
 
   va_end (pArgPtr);
 
@@ -81,7 +83,10 @@
 }
 
 int32_t WelsVsnprintf (char* pBuffer, int32_t iSizeOfBuffer, const char* kpFormat, va_list pArgPtr) {
-  return vsnprintf_s (pBuffer, iSizeOfBuffer, _TRUNCATE, kpFormat, pArgPtr);
+  int32_t iRc = vsnprintf_s (pBuffer, iSizeOfBuffer, _TRUNCATE, kpFormat, pArgPtr);
+  if (iRc < 0)
+    iRc = iSizeOfBuffer;
+  return iRc;
 }
 
 WelsFileHandle* WelsFopen (const char* kpFilename,  const char* kpMode) {
@@ -122,8 +127,10 @@
   va_start (pArgPtr, kpFormat);
 
   iRc = vsnprintf (pBuffer, iSizeOfBuffer, kpFormat, pArgPtr); //confirmed_safe_unsafe_usage
-  if (iRc < 0)
+  if (iRc < 0) {
     pBuffer[iSizeOfBuffer - 1] = '\0';
+    iRc = iSizeOfBuffer;
+  }
 
   va_end (pArgPtr);
 
@@ -139,8 +146,10 @@
 
 int32_t WelsVsnprintf (char* pBuffer, int32_t iSizeOfBuffer, const char* kpFormat, va_list pArgPtr) {
   int32_t iRc = vsnprintf (pBuffer, iSizeOfBuffer, kpFormat, pArgPtr); //confirmed_safe_unsafe_usage
-  if (iRc < 0)
+  if (iRc < 0) {
     pBuffer[iSizeOfBuffer - 1] = '\0';
+    iRc = iSizeOfBuffer;
+  }
   return iRc;
 }
 
--- a/codec/decoder/plus/src/welsDecoderExt.cpp
+++ b/codec/decoder/plus/src/welsDecoderExt.cpp
@@ -110,10 +110,8 @@
   iCurUsed     = WelsSnprintf (chFileName,  iBufLeft,  "bs_0x%p_", (void*)this);
   iCurUsedSize = WelsSnprintf (chFileNameSize, iBufLeftSize, "size_0x%p_", (void*)this);
 
-  if (iCurUsed > 0) {
-    iBufUsed += iCurUsed;
-    iBufLeft -= iCurUsed;
-  }
+  iBufUsed += iCurUsed;
+  iBufLeft -= iCurUsed;
   if (iBufLeft > 0) {
     iCurUsed = WelsStrftime (&chFileName[iBufUsed], iBufLeft, "%y%m%d%H%M%S", &sCurTime);
     iBufUsed += iCurUsed;
@@ -120,10 +118,8 @@
     iBufLeft -= iCurUsed;
   }
 
-  if (iCurUsedSize > 0) {
-    iBufUsedSize += iCurUsedSize;
-    iBufLeftSize -= iCurUsedSize;
-  }
+  iBufUsedSize += iCurUsedSize;
+  iBufLeftSize -= iCurUsedSize;
   if (iBufLeftSize > 0) {
     iCurUsedSize = WelsStrftime (&chFileNameSize[iBufUsedSize], iBufLeftSize, "%y%m%d%H%M%S", &sCurTime);
     iBufUsedSize += iCurUsedSize;
@@ -132,19 +128,15 @@
 
   if (iBufLeft > 0) {
     iCurUsed = WelsSnprintf (&chFileName[iBufUsed], iBufLeft, ".%03.3u.264", WelsGetMillisecond (&sCurTime));
-    if (iCurUsed > 0) {
-      iBufUsed += iCurUsed;
-      iBufLeft -= iCurUsed;
-    }
+    iBufUsed += iCurUsed;
+    iBufLeft -= iCurUsed;
   }
 
   if (iBufLeftSize > 0) {
     iCurUsedSize = WelsSnprintf (&chFileNameSize[iBufUsedSize], iBufLeftSize, ".%03.3u.len",
                                  WelsGetMillisecond (&sCurTime));
-    if (iCurUsedSize > 0) {
-      iBufUsedSize += iCurUsedSize;
-      iBufLeftSize -= iCurUsedSize;
-    }
+    iBufUsedSize += iCurUsedSize;
+    iBufLeftSize -= iCurUsedSize;
   }
 
 
--- a/codec/encoder/core/src/utils.cpp
+++ b/codec/encoder/core/src/utils.cpp
@@ -144,26 +144,20 @@
 
       WelsGetTimeOfDay(&tTime);
       iCurUsed = WelsSnprintf (&pBuf[iBufUsed], iBufLeft, "[0x%p @ ", pEncCtx);	// confirmed_safe_unsafe_usage
-      if (iCurUsed >= 0) {
-        iBufUsed += iCurUsed;
-        iBufLeft -= iCurUsed;
-      }
+      iBufUsed += iCurUsed;
+      iBufLeft -= iCurUsed;
 
       if (iBufLeft > 0) {
         iCurUsed = GetCodeName (&pBuf[iBufUsed], iBufLeft);
-        if (iCurUsed > 0) {
-          iBufUsed += iCurUsed;
-          iBufLeft -= iCurUsed;
-        }
+        iBufUsed += iCurUsed;
+        iBufLeft -= iCurUsed;
         pBuf[iBufUsed] = ' ';
         ++ iBufUsed;
         -- iBufLeft;
 
         iCurUsed = GetLibName (&pBuf[iBufUsed], iBufLeft);
-        if (iCurUsed > 0) {
-          iBufUsed += iCurUsed;
-          iBufLeft -= iCurUsed;
-        }
+        iBufUsed += iCurUsed;
+        iBufLeft -= iCurUsed;
         pBuf[iBufUsed] = ' ';
         ++ iBufUsed;
         -- iBufLeft;
@@ -172,10 +166,8 @@
         ++ iBufUsed;
         -- iBufLeft;
         iCurUsed = GetVerNum (&pBuf[iBufUsed], iBufLeft);
-        if (iCurUsed > 0) {
-          iBufUsed += iCurUsed;
-          iBufLeft -= iCurUsed;
-        }
+        iBufUsed += iCurUsed;
+        iBufLeft -= iCurUsed;
         pBuf[iBufUsed] = ' ';
         ++ iBufUsed;
         -- iBufLeft;
@@ -183,10 +175,8 @@
 
       if (iBufLeft > 0) {
         iCurUsed = WelsStrftime (&pBuf[iBufUsed], iBufLeft, "%y-%m-%d %H:%M:%S", &tTime);
-        if (iCurUsed > 0) {
-          iBufUsed += iCurUsed;
-          iBufLeft -= iCurUsed;
-        }
+        iBufUsed += iCurUsed;
+        iBufLeft -= iCurUsed;
       } else {
         return;
       }
@@ -193,10 +183,8 @@
 
       if (iBufLeft > 0) {
         iCurUsed = WelsSnprintf (&pBuf[iBufUsed], iBufLeft, ".%3.3u]: ", tTime.millitm);	// confirmed_safe_unsafe_usage
-        if (iCurUsed >= 0) {
-          iBufUsed += iCurUsed;
-          iBufLeft -= iCurUsed;
-        }
+        iBufUsed += iCurUsed;
+        iBufLeft -= iCurUsed;
       } else {
         return;
       }
@@ -209,18 +197,14 @@
       pStr	= GetLogTag (kiLevel, &i_shift);
       if (NULL != pStr) {
         iCurUsed = WelsSnprintf (&pBuf[iBufUsed], iBufLeft, "%s ", pStr);
-        if (iCurUsed >= 0) {
-          iBufUsed += iCurUsed;
-          iBufLeft -= iCurUsed;
-        }
+        iBufUsed += iCurUsed;
+        iBufLeft -= iCurUsed;
       }
     }
     if (iBufLeft > 0) {
       iCurUsed = WelsVsnprintf (&pBuf[iBufUsed], iBufLeft, kpFmtStr, argv);	// confirmed_safe_unsafe_usage
-      if (iCurUsed > 0) {
-        iBufUsed += iCurUsed;
-        iBufLeft -= iCurUsed;
-      }
+      iBufUsed += iCurUsed;
+      iBufLeft -= iCurUsed;
     }
 #ifdef ENABLE_TRACE_FILE
     if (NULL != pEncCtx && NULL != pEncCtx->pFileLog) {
--- a/codec/encoder/plus/src/welsEncoderExt.cpp
+++ b/codec/encoder/plus/src/welsEncoderExt.cpp
@@ -90,10 +90,8 @@
   iCurUsedSize  = WelsSnprintf (strLenFileName, iBufferLeftSize, "enc_size_0x%p_", (void*)this);
 
 
-  if (iCurUsed > 0) {
-    iBufferUsed += iCurUsed;
-    iBufferLeft -= iCurUsed;
-  }
+  iBufferUsed += iCurUsed;
+  iBufferLeft -= iCurUsed;
   if (iBufferLeft > 0) {
     iCurUsed = WelsStrftime (&strStreamFileName[iBufferUsed], iBufferLeft, "%y%m%d%H%M%S", &tTime);
     iBufferUsed += iCurUsed;
@@ -100,10 +98,8 @@
     iBufferLeft -= iCurUsed;
   }
 
-  if (iCurUsedSize > 0) {
-    iBufferUsedSize += iCurUsedSize;
-    iBufferLeftSize -= iCurUsedSize;
-  }
+  iBufferUsedSize += iCurUsedSize;
+  iBufferLeftSize -= iCurUsedSize;
   if (iBufferLeftSize > 0) {
     iCurUsedSize = WelsStrftime (&strLenFileName[iBufferUsedSize], iBufferLeftSize, "%y%m%d%H%M%S", &tTime);
     iBufferUsedSize += iCurUsedSize;
@@ -113,19 +109,15 @@
   if (iBufferLeft > 0) {
     iCurUsed = WelsSnprintf (&strStreamFileName[iBufferUsed], iBufferLeft, ".%03.3u.264",
                              WelsGetMillisecond(&tTime));
-    if (iCurUsed > 0) {
-      iBufferUsed += iCurUsed;
-      iBufferLeft -= iCurUsed;
-    }
+    iBufferUsed += iCurUsed;
+    iBufferLeft -= iCurUsed;
   }
 
   if (iBufferLeftSize > 0) {
     iCurUsedSize = WelsSnprintf (&strLenFileName[iBufferUsedSize], iBufferLeftSize, ".%03.3u.len",
                                  WelsGetMillisecond(&tTime));
-    if (iCurUsedSize > 0) {
-      iBufferUsedSize += iCurUsedSize;
-      iBufferLeftSize -= iCurUsedSize;
-    }
+    iBufferUsedSize += iCurUsedSize;
+    iBufferLeftSize -= iCurUsedSize;
   }
 
   m_pFileBs     = WelsFopen (strStreamFileName, "wb");
@@ -471,8 +463,8 @@
         m_pFileBsSize = NULL;
       }
       char strStreamFileName[128] = {0};
-      int32_t iLen = WelsSnprintf (strStreamFileName, 128, "adj%d_w%d.264", m_iSwitchTimes,
-                                   m_pEncContext->pSvcParam->iPicWidth);
+      WelsSnprintf (strStreamFileName, 128, "adj%d_w%d.264", m_iSwitchTimes,
+                    m_pEncContext->pSvcParam->iPicWidth);
       m_pFileBs = WelsFopen (strStreamFileName, "wb");
       WelsSnprintf (strStreamFileName, 128, "adj%d_w%d_size.iLen", m_iSwitchTimes,
                     m_pEncContext->pSvcParam->iPicWidth);