summaryrefslogtreecommitdiff
path: root/include/asterisk/strings.h
diff options
context:
space:
mode:
authorTilghman Lesher <tilghman@meg.abyt.es>2008-12-14 18:16:28 +0000
committerTilghman Lesher <tilghman@meg.abyt.es>2008-12-14 18:16:28 +0000
commitc31cbd7f1a8ea2978b902c32c19607f24516f22b (patch)
tree0d219dd6319dbf48845f586b220d5531d5f4593a /include/asterisk/strings.h
parentc0fc8edbbdccac58ebea59c069c27b5e09ae967c (diff)
Don't pass a negative to an unsigned type and expect things to work correctly.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@164168 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'include/asterisk/strings.h')
-rw-r--r--include/asterisk/strings.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/include/asterisk/strings.h b/include/asterisk/strings.h
index 84782a3ac..0acc83436 100644
--- a/include/asterisk/strings.h
+++ b/include/asterisk/strings.h
@@ -477,11 +477,11 @@ attribute_pure char *ast_str_buffer(struct ast_str *buf),
)
AST_INLINE_API(
-char *ast_str_truncate(struct ast_str *buf, size_t len),
+char *ast_str_truncate(struct ast_str *buf, ssize_t len),
{
#ifdef DEBUG_OPAQUE
if (len < 0) {
- buf->used2 += len;
+ buf->used2 += (ssize_t) abs(len) > buf->used2 ? -buf->used2 : len;
} else {
buf->used2 = len;
}
@@ -489,7 +489,7 @@ char *ast_str_truncate(struct ast_str *buf, size_t len),
return buf->str2;
#else
if (len < 0) {
- buf->used += len;
+ buf->used += (ssize_t) abs(len) > buf->used ? -buf->used : len;
} else {
buf->used = len;
}