]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix ast_str_truncate signedness warning and documentation.
authorWalter Doekes <walter+asterisk@wjd.nu>
Wed, 23 Nov 2011 19:53:58 +0000 (19:53 +0000)
committerWalter Doekes <walter+asterisk@wjd.nu>
Wed, 23 Nov 2011 19:53:58 +0000 (19:53 +0000)
Review: https://reviewboard.asterisk.org/r/1594

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@346144 65c4cc65-6c06-0410-ace0-fbb531ad65f3

include/asterisk/strings.h

index 2a8b0e490544326a30489b8924281a6559ddbe65..5827dda9ba2a806fc87b3d0a3ec8ac9d3ebac3e4 100644 (file)
@@ -498,14 +498,20 @@ char * attribute_pure ast_str_buffer(const struct ast_str *buf),
 
 /*!\brief Truncates the enclosed string to the given length.
  * \param buf A pointer to the ast_str structure.
- * \param len Maximum length of the string.
+ * \param len Maximum length of the string. If len is larger than the
+ *        current maximum length, things will explode. If it is negative
+ *        at most -len characters will be trimmed off the end.
  * \retval A pointer to the resulting string.
  */
 AST_INLINE_API(
 char *ast_str_truncate(struct ast_str *buf, ssize_t len),
 {
        if (len < 0) {
-               buf->__AST_STR_USED += ((ssize_t) abs(len)) > (ssize_t) buf->__AST_STR_USED ? -buf->__AST_STR_USED : len;
+               if ((typeof(buf->__AST_STR_USED)) -len >= buf->__AST_STR_USED) {
+                       buf->__AST_STR_USED = 0;
+               } else {
+                       buf->__AST_STR_USED += len;
+               }
        } else {
                buf->__AST_STR_USED = len;
        }