diff options
Diffstat (limited to 'externals')
-rw-r--r-- | externals/grill/flext/changes.txt | 1 | ||||
-rw-r--r-- | externals/grill/flext/flext.vcproj | 2 | ||||
-rw-r--r-- | externals/grill/flext/source/flatom_pr.cpp | 27 |
3 files changed, 20 insertions, 10 deletions
diff --git a/externals/grill/flext/changes.txt b/externals/grill/flext/changes.txt index 8a9b6a9b..4eb7d0d4 100644 --- a/externals/grill/flext/changes.txt +++ b/externals/grill/flext/changes.txt @@ -29,6 +29,7 @@ Version history: - attribute editor: close editor window on object destruction - fixed $0-arguments in attribute saving - introducing ring buffer for message queue (thanks to Tom Schouten) +- printing of atoms into buffer with better error checking 0.4.6: - added a text edit window for list attributes diff --git a/externals/grill/flext/flext.vcproj b/externals/grill/flext/flext.vcproj index 1d31e557..6dba0f79 100644 --- a/externals/grill/flext/flext.vcproj +++ b/externals/grill/flext/flext.vcproj @@ -408,7 +408,7 @@ Name="VCLinkerTool" AdditionalDependencies="pd.lib pthreadVC.lib stk.lib sndobj.lib" OutputFile=".\pd-msvc\flext.dll" - AdditionalLibraryDirectories="f:\prog\packs\pthreads;"f:\prog\pd\pd-cvs\bin";F:\prog\audio\stk\lib;F:\prog\audio\sndobj\lib" + AdditionalLibraryDirectories="c:\data\prog\packs\pthreads;"c:\data\prog\pd\pd-cvs\bin";c:\data\prog\audio\stk\lib;c:\data\prog\audio\sndobj\lib" GenerateDebugInformation="FALSE" OptimizeReferences="1" ImportLibrary="./pd-msvc/flext_l.lib" diff --git a/externals/grill/flext/source/flatom_pr.cpp b/externals/grill/flext/source/flatom_pr.cpp index 43721388..5b15648a 100644 --- a/externals/grill/flext/source/flatom_pr.cpp +++ b/externals/grill/flext/source/flatom_pr.cpp @@ -27,29 +27,38 @@ bool flext::PrintAtom(const t_atom &a,char *buf,int bufsz) { bool ok = true; if(IsFloat(a)) { - STD::snprintf(buf,bufsz,"%g",GetFloat(a)); + ok = STD::snprintf(buf,bufsz,"%g",GetFloat(a)) > 0; } else if(IsInt(a)) { - STD::snprintf(buf,bufsz,"%i",GetInt(a)); + ok = STD::snprintf(buf,bufsz,"%i",GetInt(a)) > 0; } else if(IsSymbol(a)) { - if(!FLEXT_ASSERT(GetSymbol(a))) *buf = 0; - else - STD::strncpy(buf,GetString(a),bufsz); + if(!FLEXT_ASSERT(GetSymbol(a))) + *buf = 0; + else { + const char *c = GetString(a); + int len = strlen(c); + if(len < bufsz) { + memcpy(buf,c,len); buf[len] = 0; + ok = true; + } + else + ok = false; + } } else if(IsPointer(a)) { - STD::snprintf(buf,bufsz,"%p",GetPointer(a)); + ok = STD::snprintf(buf,bufsz,"%p",GetPointer(a)) > 0; } #if FLEXT_SYS == FLEXT_SYS_PD else if(a.a_type == A_DOLLAR) { - STD::snprintf(buf,bufsz,"$%d",a.a_w.w_index); + ok = STD::snprintf(buf,bufsz,"$%d",a.a_w.w_index) > 0; } else if(a.a_type == A_DOLLSYM) { - STD::snprintf(buf,bufsz,"$%s",GetString(a)); + ok = STD::snprintf(buf,bufsz,"$%s",GetString(a)) > 0; } #elif FLEXT_SYS == FLEXT_SYS_MAX else if(a.a_type == A_DOLLAR) { - STD::snprintf(buf,bufsz,"$%d",a.a_w.w_long); + ok = STD::snprintf(buf,bufsz,"$%d",a.a_w.w_long) > 0; } #else //#pragma message("Not implemented") |