[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2-demos] master 136d6e6 6/6: Make new code from David work.
From: |
Werner LEMBERG |
Subject: |
[freetype2-demos] master 136d6e6 6/6: Make new code from David work. |
Date: |
Fri, 24 Jul 2020 10:16:51 -0400 (EDT) |
branch: master
commit 136d6e64ba6200c1820d1de46f08a4057f76a7a8
Author: Werner Lemberg <wl@gnu.org>
Commit: Werner Lemberg <wl@gnu.org>
Make new code from David work.
* src/strbuf.c (strbuf_value): Fix assertion.
(strbuf_vformat): Shortcut if no space is available.
Set `pos'.
* src/ftcommon.c (FTDemo_Draw_Header): Add missing call to
`strbuf_skip_over'.
---
ChangeLog | 11 +++++++++++
src/ftcommon.c | 1 +
src/strbuf.c | 16 +++++++++++++---
3 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index a2a395c..ff79066 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2020-07-24 Werner Lemberg <wl@gnu.org>
+
+ Make new code from David work.
+
+ * src/strbuf.c (strbuf_value): Fix assertion.
+ (strbuf_vformat): Shortcut if no space is available.
+ Set `pos'.
+
+ * src/ftcommon.c (FTDemo_Draw_Header): Add missing call to
+ `strbuf_skip_over'.
+
2020-07-24 David Turner <david@freetype.org>
Use new string functions to replace remaining `sprintf' calls.
diff --git a/src/ftcommon.c b/src/ftcommon.c
index 00cbd81..6221e53 100644
--- a/src/ftcommon.c
+++ b/src/ftcommon.c
@@ -1126,6 +1126,7 @@
FT_Get_Glyph_Name( face, glyph_idx,
strbuf_end( buf ),
(FT_UInt)( strbuf_available( buf ) + 1 ) );
+ strbuf_skip_over( buf, strlen( strbuf_end( buf ) ) );
}
grWriteCellString( display->bitmap, 0, (line++) * HEADER_HEIGHT,
diff --git a/src/strbuf.c b/src/strbuf.c
index 918e32a..81dfc37 100644
--- a/src/strbuf.c
+++ b/src/strbuf.c
@@ -35,7 +35,7 @@
const char*
strbuf_value( const StrBuf* sb )
{
- assert( sb->pos < sb->limit );
+ assert( sb->pos <= sb->limit );
assert( sb->buffer[sb->pos] == '\0' );
return sb->buffer;
@@ -157,12 +157,22 @@
va_list args )
{
size_t available = sb->limit - sb->pos;
- int ret = vsnprintf( sb->buffer + sb->pos, available,
- fmt, args );
+ int ret;
+
+
+ if ( !available )
+ return 0;
+
+ ret = vsnprintf( sb->buffer + sb->pos, available, fmt, args );
/* NOTE: On Windows, vsnprintf() can return -1 in case of truncation! */
if ( ret < 0 || (size_t)ret > available )
+ {
+ sb->pos = sb->limit;
return (int)available;
+ }
+
+ sb->pos += ret;
return (int)ret;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] master 136d6e6 6/6: Make new code from David work.,
Werner LEMBERG <=