changeset 1765:15414cbe857f

Fix warnings with Visual C largely in debug mode. Switched to using _sntprintf() and pointer arithmetic in dw_file_browse().
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sat, 30 Jun 2012 19:53:18 +0000
parents 5ffeea4a2a4b
children 47e503ecc812
files dwtest.c win/dw.c
diffstat 2 files changed, 14 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/dwtest.c	Sat Jun 30 18:34:19 2012 +0000
+++ b/dwtest.c	Sat Jun 30 19:53:18 2012 +0000
@@ -846,7 +846,7 @@
     
     if(test)
     {
-        dw_clipboard_set_text(test, strlen(test));
+        dw_clipboard_set_text(test, (int)strlen(test));
         dw_free(test);
     }
     return TRUE;
--- a/win/dw.c	Sat Jun 30 18:34:19 2012 +0000
+++ b/win/dw.c	Sat Jun 30 19:53:18 2012 +0000
@@ -11716,6 +11716,8 @@
    dst[x] = 0;
 }
 
+#define BROWSEBUFSIZE 1000
+
 /*
  * Opens a file dialog and queries user selection.
  * Parameters:
@@ -11731,8 +11733,8 @@
 char * API dw_file_browse(char *title, char *defpath, char *ext, int flags)
 {
    OPENFILENAME of = {0};
-   TCHAR filenamebuf[1001] = {0}, *fbuf = filenamebuf;
-   TCHAR filterbuf[1001] = {0};
+   TCHAR filenamebuf[BROWSEBUFSIZE+1] = {0}, *fbuf = filenamebuf;
+   TCHAR filterbuf[BROWSEBUFSIZE+1] = {0};
    TCHAR *exten = UTF8toWide(ext);
    TCHAR *dpath = UTF8toWide(defpath);
    int rc;
@@ -11760,7 +11762,7 @@
          {
             if (SHGetPathFromIDList(pidl,szDir))
             {
-               _tcsncpy(filenamebuf,szDir,1000);
+               _tcsncpy(filenamebuf,szDir,BROWSEBUFSIZE);
             }
 
             /* In C++: pMalloc->Free(pidl); pMalloc->Release(); */
@@ -11775,7 +11777,7 @@
                             -1,
                             (LPCTSTR)UTF8toWide(title),
                             (LPTSTR)filenamebuf,
-                            1000,
+                            BROWSEBUFSIZE,
                             FALSE ) )
      {
         return _strdup( WideToUTF8(fbuf) );
@@ -11794,13 +11796,15 @@
           */
          int len;
          TCHAR *ptr = filterbuf;
-         len = _stprintf( ptr, TEXT("%s Files (*.%s)"), exten, exten );
+         TCHAR *start = filterbuf;
+
+         len = _sntprintf( ptr, BROWSEBUFSIZE - (ptr - start), TEXT("%s Files (*.%s)"), exten, exten );
          ptr = ptr + len + 1; /* past first \0 */
-         len = _stprintf( ptr, TEXT("*.%s"), exten );
+         len = _sntprintf( ptr, BROWSEBUFSIZE - (ptr - start), TEXT("*.%s"), exten );
          ptr = ptr + len + 1; /* past next \0 */
-         len = _stprintf( ptr, TEXT("All Files") );
+         len = _sntprintf( ptr, BROWSEBUFSIZE - (ptr - start), TEXT("All Files") );
          ptr = ptr + len + 1; /* past next \0 */
-         len = _stprintf( ptr, TEXT("*.*") );
+         len = _sntprintf( ptr, BROWSEBUFSIZE - (ptr - start), TEXT("*.*") );
       }
 
       memset( &of, 0, sizeof(OPENFILENAME) );
@@ -11817,7 +11821,7 @@
       of.lpstrFile = filenamebuf;
       of.lpstrFilter = filterbuf;
       of.nFilterIndex = 1;
-      of.nMaxFile = 1000;
+      of.nMaxFile = BROWSEBUFSIZE;
       /*of.lpstrDefExt = ext;*/
       of.Flags = OFN_NOCHANGEDIR;