[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2-demos] master 4c36bf7 2/6: Add `ft_strdup' function.
From: |
Werner LEMBERG |
Subject: |
[freetype2-demos] master 4c36bf7 2/6: Add `ft_strdup' function. |
Date: |
Fri, 24 Jul 2020 10:16:50 -0400 (EDT) |
branch: master
commit 4c36bf7b6705303e3c546617abe410791bb22bd2
Author: David Turner <david@freetype.org>
Commit: Werner Lemberg <wl@gnu.org>
Add `ft_strdup' function.
This simplifies compilation on Windows, which doesn't have this
function.
* src/common.c: Include `ftstring.h'.
(ft_strdup): New function.
* src/common.h: Updated.
* src/ftcommon.c (FTDemo_Install_Font), src/ftdiff.c
(render_state_set_files): Use it.
---
ChangeLog | 14 ++++++++++++++
src/common.c | 21 ++++++++++++++++++++-
src/common.h | 9 +++++++++
src/ftcommon.c | 8 +++-----
src/ftdiff.c | 6 ++----
5 files changed, 48 insertions(+), 10 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index d67c1a3..377f37f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,19 @@
2020-07-24 David Turner <david@freetype.org>
+ Add `ft_strdup' function.
+
+ This simplifies compilation on Windows, which doesn't have this
+ function.
+
+ * src/common.c: Include `ftstring.h'.
+ (ft_strdup): New function.
+ * src/common.h: Updated.
+
+ * src/ftcommon.c (FTDemo_Install_Font), src/ftdiff.c
+ (render_state_set_files): Use it.
+
+2020-07-24 David Turner <david@freetype.org>
+
* src/*: Replace simple usage of `sprintf' with `snprintf'.
Recent gcc compiler versions produce warnings for potentially unsafe
diff --git a/src/common.c b/src/common.c
index 1960165..509c5fa 100644
--- a/src/common.c
+++ b/src/common.c
@@ -5,6 +5,7 @@
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
+#include <string.h>
char*
@@ -36,6 +37,25 @@
}
+ char*
+ ft_strdup( const char* str )
+ {
+ char* result;
+ size_t len;
+
+
+ if ( !str )
+ return NULL;
+
+ len = strlen( str );
+ result = (char *)malloc( len + 1 );
+ if ( result )
+ memcpy( result, str, len + 1 );
+
+ return result;
+ }
+
+
void
Panic( const char* fmt,
... )
@@ -105,5 +125,4 @@
return -1;
}
-
/* End */
diff --git a/src/common.h b/src/common.h
index afa5f70..35fc5ef 100644
--- a/src/common.h
+++ b/src/common.h
@@ -6,6 +6,7 @@
extern "C" {
#endif
+
extern char*
ft_basename( const char* name );
@@ -26,6 +27,14 @@
utf8_next( const char** pcursor,
const char* end );
+ /*
+ * Implement `strdup', which is POSIX but not C89 or even C11, and
+ * Microsoft insists on renaming it `_strdup' instead. Platform
+ * auto-detection is complicated, so just provide a re-implementation.
+ */
+ extern char*
+ ft_strdup( const char* name );
+
#ifdef __cplusplus
}
#endif
diff --git a/src/ftcommon.c b/src/ftcommon.c
index 14a3aaa..697cd2a 100644
--- a/src/ftcommon.c
+++ b/src/ftcommon.c
@@ -605,11 +605,9 @@
font = (PFont)malloc( sizeof ( *font ) );
- /* We allocate four more bytes since we want to attach an AFM */
- /* or PFM file for Type 1 fonts (if available). Such fonts */
- /* always have the extension `.afm' or `.pfm'. */
- font->filepathname = (char*)malloc( strlen( filepath ) + 4 + 1 );
- strcpy( (char*)font->filepathname, filepath );
+ font->filepathname = ft_strdup( filepath );
+ if ( !font->filepathname )
+ return FT_Err_Out_Of_Memory;
font->face_index = ( j << 16 ) + i;
diff --git a/src/ftdiff.c b/src/ftdiff.c
index 59c68fe..8abe9e3 100644
--- a/src/ftdiff.c
+++ b/src/ftdiff.c
@@ -460,19 +460,17 @@
fn = face->family_name;
else
fn = (char*)"(unknown family)";
- family_name = (char*)malloc( strlen( fn ) + 1 );
+ family_name = ft_strdup( fn );
if ( family_name == NULL )
panic( "ftdiff: not enough memory\n" );
- strcpy( family_name, fn );
if ( face->style_name )
sn = face->style_name;
else
sn = (char*)"(unknown style)";
- style_name = (char*)malloc( strlen( sn ) + 1 );
+ style_name = ft_strdup( sn );
if ( style_name == NULL )
panic( "ftdiff: not enough memory\n" );
- strcpy( style_name, sn );
faces[num_faces].filepath = files[0];
faces[num_faces].index = count;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] master 4c36bf7 2/6: Add `ft_strdup' function.,
Werner LEMBERG <=