Преглед на файлове

no warnings when compiling /W3
compiling all test cases and compilers in test.sbm
Compilers:
32-bit:
VS2015
VS2013
VS2008
VC6 (1998)
clang-cl 9.0.1
64-bit
VS2015
clang-cl 9.0.1

Sean Barrett преди 6 години
родител
ревизия
a0b521fcf2

Файловите разлики са ограничени, защото са твърде много
+ 221 - 150
stb.h


+ 5 - 4
stb_c_lexer.h

@@ -514,7 +514,7 @@ static int stb__clex_parse_string(stb_lexer *lexer, char *p, int type)
    }
    *out = 0;
    lexer->string = lexer->string_storage;
-   lexer->string_len = out - lexer->string_storage;
+   lexer->string_len = (int) (out - lexer->string_storage);
    return stb__clex_token(lexer, type, start, p);
 }
 
@@ -824,7 +824,7 @@ int stb_c_lexer_get_token(stb_lexer *lexer)
 #endif // STB_C_LEXER_IMPLEMENTATION
 
 #ifdef STB_C_LEXER_SELF_TEST
-
+#define _CRT_SECURE_NO_WARNINGS
 #include <stdio.h>
 #include <stdlib.h>
 
@@ -884,11 +884,12 @@ void dummy(void)
 {
    double some_floats[] = {
       1.0501, -10.4e12, 5E+10,
-#if 0   // not support in C++ or C-pre-99, so don't try to compile it
+#if 0   // not supported in C++ or C-pre-99, so don't try to compile it, but let our parser test it
       0x1.0p+24, 0xff.FP-8, 0x1p-23,
 #endif
       4.
    };
+   (void) sizeof(some_floats);
 
    printf("test %d",1); // https://github.com/nothings/stb/issues/13
 }
@@ -897,7 +898,7 @@ int main(int argc, char **argv)
 {
    FILE *f = fopen("stb_c_lexer.h","rb");
    char *text = (char *) malloc(1 << 20);
-   int len = f ? fread(text, 1, 1<<20, f) : -1;
+   int len = f ? (int) fread(text, 1, 1<<20, f) : -1;
    stb_lexer lex;
    if (len < 0) {
       fprintf(stderr, "Error opening file\n");

+ 6 - 3
stb_connected_components.h

@@ -709,7 +709,7 @@ static void stbcc__remove_clump_connection(stbcc_grid *g, int x1, int y1, int x2
 
 static void stbcc__add_connections_to_adjacent_cluster(stbcc_grid *g, int cx, int cy, int dx, int dy)
 {
-   unsigned char connected[STBCC__MAX_EDGE_CLUMPS_PER_CLUSTER][STBCC__MAX_EDGE_CLUMPS_PER_CLUSTER/8] = { 0 };
+   unsigned char connected[STBCC__MAX_EDGE_CLUMPS_PER_CLUSTER][STBCC__MAX_EDGE_CLUMPS_PER_CLUSTER/8] = { { 0 } };
    int x = cx * STBCC__CLUSTER_SIZE_X;
    int y = cy * STBCC__CLUSTER_SIZE_Y;
    int step_x, step_y=0, i, j, k, n;
@@ -751,6 +751,7 @@ static void stbcc__add_connections_to_adjacent_cluster(stbcc_grid *g, int cx, in
       n = STBCC__CLUSTER_SIZE_X;
    } else {
       assert(0);
+      return;
    }
 
    for (k=0; k < n; ++k) {
@@ -772,7 +773,7 @@ static void stbcc__add_connections_to_adjacent_cluster(stbcc_grid *g, int cx, in
 
 static void stbcc__remove_connections_to_adjacent_cluster(stbcc_grid *g, int cx, int cy, int dx, int dy)
 {
-   unsigned char disconnected[STBCC__MAX_EDGE_CLUMPS_PER_CLUSTER][STBCC__MAX_EDGE_CLUMPS_PER_CLUSTER/8] = { 0 };
+   unsigned char disconnected[STBCC__MAX_EDGE_CLUMPS_PER_CLUSTER][STBCC__MAX_EDGE_CLUMPS_PER_CLUSTER/8] = { { 0 } };
    int x = cx * STBCC__CLUSTER_SIZE_X;
    int y = cy * STBCC__CLUSTER_SIZE_Y;
    int step_x, step_y=0, i, j, k, n;
@@ -811,6 +812,7 @@ static void stbcc__remove_connections_to_adjacent_cluster(stbcc_grid *g, int cx,
       n = STBCC__CLUSTER_SIZE_X;
    } else {
       assert(0);
+      return;
    }
 
    for (k=0; k < n; ++k) {
@@ -954,11 +956,12 @@ static void stbcc__build_clumps_for_cluster(stbcc_grid *g, int cx, int cy)
    for (j=1; j < STBCC__CLUSTER_SIZE_Y-1; ++j) {
       for (i=1; i < STBCC__CLUSTER_SIZE_X-1; ++i) {
          stbcc__tinypoint p = cbi.parent[j][i];
-         if (p.x == i && p.y == j)
+         if (p.x == i && p.y == j) {
             if (STBCC__MAP_OPEN(g,x+i,y+j))
                cbi.label[j][i] = label++;
             else
                cbi.label[j][i] = STBCC__NULL_CLUMPID;
+         }
       }
    }
 

+ 14 - 1
stb_ds.h

@@ -308,6 +308,10 @@ CREDITS
   Per Vognsen  -- idea for hash table API/implementation
 */
 
+#ifdef STBDS_UNIT_TESTS
+#define _CRT_SECURE_NO_WARNINGS
+#endif
+
 #ifndef INCLUDE_STB_DS_H
 #define INCLUDE_STB_DS_H
 
@@ -593,6 +597,7 @@ template<class T> static T * stbds_shmode_func_wrapper(T *, size_t elemsize, int
 #include <string.h>
 
 #ifndef STBDS_ASSERT
+#define STBDS_ASSERT_WAS_UNDEFINED
 #define STBDS_ASSERT(x)   ((void) 0)
 #endif
 
@@ -1442,6 +1447,9 @@ void stbds_strreset(stbds_string_arena *a)
 
 #ifdef STBDS_UNIT_TESTS
 #include <stdio.h>
+#ifdef STBDS_ASSERT_WAS_UNDEFINED
+#undef STBDS_ASSERT
+#endif
 #ifndef STBDS_ASSERT
 #define STBDS_ASSERT assert
 #include <assert.h>
@@ -1452,7 +1460,11 @@ typedef struct { int key,b,c,d; } stbds_struct;
 static char buffer[256];
 char *strkey(int n)
 {
+#if defined(_WIN32) && defined(__STDC_WANT_SECURE_LIB__)
+   sprintf_s(buffer, sizeof(buffer), "test_%d", n);
+#else
    sprintf(buffer, "test_%d", n);
+#endif
    return buffer;
 }
 
@@ -1595,9 +1607,10 @@ void stbds_unit_tests(void)
 
   for (i=0; i < testsize; i += 1) {
     stbds_struct s = { i,i*2,i*3,i*4 };
-    stbds_struct t = { i,i*2,i*3,i*4 };
+    stbds_struct t = { i,i*2,i*3+1,i*4 };
     if (i & 1) STBDS_ASSERT(hmgets(map2, s.key).d == 0);
     else       STBDS_ASSERT(hmgets(map2, s.key).d == i*4);
+    STBDS_ASSERT(hmget(map, t) == 0);
   }
   hmfree(map2);
 #endif

+ 7 - 7
stb_herringbone_wang_tile.h

@@ -166,7 +166,7 @@ int main(int argc, char **argv)
 typedef struct stbhw_tileset stbhw_tileset;
 
 // returns description of last error produced by any function (not thread-safe)
-STBHW_EXTERN char *stbhw_get_last_error(void);
+STBHW_EXTERN const char *stbhw_get_last_error(void);
 
 // build a tileset from an image that conforms to a template created by this
 // library. (you allocate storage for stbhw_tileset and function fills it out;
@@ -345,10 +345,10 @@ static signed char c_color[STB_HBWANG_MAX_Y+6][STB_HBWANG_MAX_X+6];
 static signed char v_color[STB_HBWANG_MAX_Y+6][STB_HBWANG_MAX_X+5];
 static signed char h_color[STB_HBWANG_MAX_Y+5][STB_HBWANG_MAX_X+6];
 
-static char *stbhw_error;
-STBHW_EXTERN char *stbhw_get_last_error(void)
+static const char *stbhw_error;
+STBHW_EXTERN const char *stbhw_get_last_error(void)
 {
-   char *temp = stbhw_error;
+   const char *temp = stbhw_error;
    stbhw_error = 0;
    return temp;
 }
@@ -717,7 +717,7 @@ STBHW_EXTERN int stbhw_generate_image(stbhw_tileset *ts, int **weighting, unsign
       // to avoid really obvious repetition (which happens easily with extreme weights)
       for (j=0; j < ymax-3; ++j) {
          for (i=0; i < xmax-3; ++i) {
-            int p = (i-j+1) & 3; // corner type
+            //int p = (i-j+1) & 3; // corner type   // unused, not sure what the intent was so commenting it out
             STB_HBWANG_ASSERT(i+3 < STB_HBWANG_MAX_X+6);
             STB_HBWANG_ASSERT(j+3 < STB_HBWANG_MAX_Y+6);
             if (stbhw__match(i,j) && stbhw__match(i,j+1) && stbhw__match(i,j+2)
@@ -747,7 +747,7 @@ STBHW_EXTERN int stbhw_generate_image(stbhw_tileset *ts, int **weighting, unsign
          } else {
             i = phase-4;
          }
-         for (i;; i += 4) {
+         for (;; i += 4) {
             int xpos = i * sidelen;
             if (xpos >= w)
                break;
@@ -798,7 +798,7 @@ STBHW_EXTERN int stbhw_generate_image(stbhw_tileset *ts, int **weighting, unsign
          } else {
             i = phase-4;
          }
-         for (i;; i += 4) {
+         for (;; i += 4) {
             int xpos = i * sidelen;
             if (xpos >= w)
                break;

+ 3 - 1
stb_image.h

@@ -339,11 +339,13 @@ typedef unsigned short stbi_us;
 extern "C" {
 #endif
 
+#ifndef STBIDEF
 #ifdef STB_IMAGE_STATIC
 #define STBIDEF static
 #else
 #define STBIDEF extern
 #endif
+#endif
 
 //////////////////////////////////////////////////////////////////////////////
 //
@@ -1182,7 +1184,7 @@ STBI_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned int
 #if defined(_MSC_VER) && defined(STBI_WINDOWS_UTF8)
 STBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input)
 {
-	return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, bufferlen, NULL, NULL);
+	return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int) bufferlen, NULL, NULL);
 }
 #endif
 

+ 4 - 2
stb_image_resize.h

@@ -193,6 +193,7 @@ typedef uint16_t stbir_uint16;
 typedef uint32_t stbir_uint32;
 #endif
 
+#ifndef STBIRDEF
 #ifdef STB_IMAGE_RESIZE_STATIC
 #define STBIRDEF static
 #else
@@ -202,7 +203,7 @@ typedef uint32_t stbir_uint32;
 #define STBIRDEF extern
 #endif
 #endif
-
+#endif
 
 //////////////////////////////////////////////////////////////////////////////
 //
@@ -2324,8 +2325,9 @@ static int stbir__resize_allocated(stbir__info *info,
     if (alpha_channel < 0)
         flags |= STBIR_FLAG_ALPHA_USES_COLORSPACE | STBIR_FLAG_ALPHA_PREMULTIPLIED;
 
-    if (!(flags&STBIR_FLAG_ALPHA_USES_COLORSPACE) || !(flags&STBIR_FLAG_ALPHA_PREMULTIPLIED))
+    if (!(flags&STBIR_FLAG_ALPHA_USES_COLORSPACE) || !(flags&STBIR_FLAG_ALPHA_PREMULTIPLIED)) {
         STBIR_ASSERT(alpha_channel >= 0 && alpha_channel < info->channels);
+    }
 
     if (alpha_channel >= info->channels)
         return 0;

+ 3 - 3
stb_image_write.h

@@ -299,7 +299,7 @@ STBIW_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned in
 
 STBIWDEF int stbiw_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input)
 {
-	return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, bufferlen, NULL, NULL);
+	return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int) bufferlen, NULL, NULL);
 }
 #endif
 
@@ -736,8 +736,8 @@ static int stbi_write_hdr_core(stbi__write_context *s, int x, int y, int comp, f
       char header[] = "#?RADIANCE\n# Written by stb_image_write.h\nFORMAT=32-bit_rle_rgbe\n";
       s->func(s->context, header, sizeof(header)-1);
 
-#ifdef STBI_MSC_SECURE_CRT
-      len = sprintf_s(buffer, "EXPOSURE=          1.0000000000000\n\n-Y %d +X %d\n", y, x);
+#ifdef __STDC_WANT_SECURE_LIB__
+      len = sprintf_s(buffer, sizeof(buffer), "EXPOSURE=          1.0000000000000\n\n-Y %d +X %d\n", y, x);
 #else
       len = sprintf(buffer, "EXPOSURE=          1.0000000000000\n\n-Y %d +X %d\n", y, x);
 #endif

+ 28 - 46
stb_tilemap_editor.h

@@ -971,7 +971,7 @@ struct stbte_tilemap
     short *undo_buffer;
 };
 
-static char *default_category = "[unassigned]";
+static char *default_category = (char*) "[unassigned]";
 
 static void stbte__init_gui(void)
 {
@@ -1172,7 +1172,9 @@ void stbte_set_property(stbte_tilemap *tm, int x, int y, int n, float val)
    tm->props[y][x][n] = val;
 }
 
+#ifdef STBTE_ALLOW_LINK
 static void stbte__set_link(stbte_tilemap *tm, int src_x, int src_y, int dest_x, int dest_y, int undo_mode);
+#endif
 
 enum
 {
@@ -1254,7 +1256,7 @@ static int stbte__strequal(char *p, char *q)
 
 static void stbte__compute_tileinfo(stbte_tilemap *tm)
 {
-   int i,j,n=0;
+   int i,j;
 
    tm->num_categories=0;
 
@@ -1649,6 +1651,7 @@ static void stbte__draw_rect(int x0, int y0, int x1, int y1, unsigned int color)
    STBTE_DRAW_RECT(x0,y0,x1,y1, color);
 }
 
+#ifdef STBTE_ALLOW_LINK
 static void stbte__draw_line(int x0, int y0, int x1, int y1, unsigned int color)
 {
    int temp;
@@ -1662,6 +1665,7 @@ static void stbte__draw_link(int x0, int y0, int x1, int y1, unsigned int color)
    stbte__draw_line(x0,y0,x0,y1, color);
    stbte__draw_line(x0,y1,x1,y1, color);
 }
+#endif
 
 static void stbte__draw_frame(int x0, int y0, int x1, int y1, unsigned int color)
 {
@@ -1671,12 +1675,6 @@ static void stbte__draw_frame(int x0, int y0, int x1, int y1, unsigned int color
    stbte__draw_rect(x0,y0+1,x0+1,y1,color);
 }
 
-static void stbte__draw_halfframe(int x0, int y0, int x1, int y1, unsigned int color)
-{
-   stbte__draw_rect(x0,y0,x1,y0+1,color);
-   stbte__draw_rect(x0,y0+1,x0+1,y1,color);
-}
-
 static int stbte__get_char_width(int ch)
 {
    return stbte__fontdata[ch-16];
@@ -1817,15 +1815,13 @@ static void stbte__draw_textbox(int x0, int y0, int x1, int y1, char *text, int
    stbte__draw_text(x0+xoff,y0+yoff, text, x1-x0-xoff-1, stbte__color_table[colormode][STBTE__text][colorindex]);
 }
 
-static int stbte__button(int colormode, char *label, int x, int y, int textoff, int width, int id, int toggled, int disabled)
+static int stbte__button(int colormode, const char *label, int x, int y, int textoff, int width, int id, int toggled, int disabled)
 {
    int x0=x,y0=y, x1=x+width,y1=y+STBTE__BUTTON_HEIGHT;
    int s = STBTE__BUTTON_INTERNAL_SPACING;
 
-   int over = !disabled && stbte__hittest(x0,y0,x1,y1,id);
-      
    if (stbte__ui.event == STBTE__paint)
-      stbte__draw_textbox(x0,y0,x1,y1, label,s+textoff,s, colormode, STBTE__INDEX_FOR_ID(id,disabled,toggled));
+      stbte__draw_textbox(x0,y0,x1,y1, (char*) label,s+textoff,s, colormode, STBTE__INDEX_FOR_ID(id,disabled,toggled));
    if (disabled)
       return 0;
    return (stbte__button_core(id) == 1);
@@ -1836,8 +1832,6 @@ static int stbte__button_icon(int colormode, char ch, int x, int y, int width, i
    int x0=x,y0=y, x1=x+width,y1=y+STBTE__BUTTON_HEIGHT;
    int s = STBTE__BUTTON_INTERNAL_SPACING;
 
-   int over = stbte__hittest(x0,y0,x1,y1,id);
-      
    if (stbte__ui.event == STBTE__paint) {
       char label[2] = { ch, 0 };
       int pad = (9 - stbte__get_char_width(ch))/2;
@@ -1851,7 +1845,6 @@ static int stbte__button_icon(int colormode, char ch, int x, int y, int width, i
 static int stbte__minibutton(int colormode, int x, int y, int ch, int id)
 {
    int x0 = x, y0 = y, x1 = x+8, y1 = y+7;
-   int over = stbte__hittest(x0,y0,x1,y1,id);
    if (stbte__ui.event == STBTE__paint) {
       char str[2] = { (char)ch, 0 };
       stbte__draw_textbox(x0,y0,x1,y1, str,1,0,colormode, STBTE__INDEX_FOR_ID(id,0,0));
@@ -1862,7 +1855,6 @@ static int stbte__minibutton(int colormode, int x, int y, int ch, int id)
 static int stbte__layerbutton(int x, int y, int ch, int id, int toggled, int disabled, int colormode)
 {
    int x0 = x, y0 = y, x1 = x+10, y1 = y+11;
-   int over = !disabled && stbte__hittest(x0,y0,x1,y1,id);
    if (stbte__ui.event == STBTE__paint) {
       char str[2] = { (char)ch, 0 };
       int off = (9-stbte__get_char_width(ch))/2;
@@ -1876,7 +1868,6 @@ static int stbte__layerbutton(int x, int y, int ch, int id, int toggled, int dis
 static int stbte__microbutton(int x, int y, int size, int id, int colormode)
 {
    int x0 = x, y0 = y, x1 = x+size, y1 = y+size;
-   int over = stbte__hittest(x0,y0,x1,y1,id);
    if (stbte__ui.event == STBTE__paint) {
       stbte__draw_box(x0,y0,x1,y1, colormode, STBTE__INDEX_FOR_ID(id,0,0));
    }
@@ -1886,7 +1877,6 @@ static int stbte__microbutton(int x, int y, int size, int id, int colormode)
 static int stbte__microbutton_dragger(int x, int y, int size, int id, int *pos)
 {
    int x0 = x, y0 = y, x1 = x+size, y1 = y+size;
-   int over = stbte__hittest(x0,y0,x1,y1,id);
    switch (stbte__ui.event) {
       case STBTE__paint:
          stbte__draw_box(x0,y0,x1,y1, STBTE__cexpander, STBTE__INDEX_FOR_ID(id,0,0));
@@ -1912,15 +1902,13 @@ static int stbte__microbutton_dragger(int x, int y, int size, int id, int *pos)
    return 0;
 }
 
-static int stbte__category_button(char *label, int x, int y, int width, int id, int toggled)
+static int stbte__category_button(const char *label, int x, int y, int width, int id, int toggled)
 {
    int x0=x,y0=y, x1=x+width,y1=y+STBTE__BUTTON_HEIGHT;
    int s = STBTE__BUTTON_INTERNAL_SPACING;
-
-   int over = stbte__hittest(x0,y0,x1,y1,id);
       
    if (stbte__ui.event == STBTE__paint)
-      stbte__draw_textbox(x0,y0,x1,y1, label, s,s, STBTE__ccategory_button, STBTE__INDEX_FOR_ID(id,0,toggled));
+      stbte__draw_textbox(x0,y0,x1,y1, (char*) label, s,s, STBTE__ccategory_button, STBTE__INDEX_FOR_ID(id,0,toggled));
 
    return (stbte__button_core(id) == 1);
 }
@@ -1938,7 +1926,6 @@ static int stbte__slider(int x0, int w, int y, int range, int *value, int id)
 {
    int x1 = x0+w;
    int pos = *value * w / (range+1);
-   int over = stbte__hittest(x0,y-2,x1,y+3,id);
    int event_mouse_move = STBTE__change;
    switch (stbte__ui.event) {
       case STBTE__paint:
@@ -1969,15 +1956,22 @@ static int stbte__slider(int x0, int w, int y, int range, int *value, int id)
    return STBTE__none;
 }
 
-static int stbte__float_control(int x0, int y0, int w, float minv, float maxv, float scale, char *fmt, float *value, int colormode, int id)
+#if defined(_WIN32) && defined(__STDC_WANT_SECURE_LIB__)
+   #define stbte__sprintf      sprintf_s
+   #define stbte__sizeof(s)    , sizeof(s)
+#else
+   #define stbte__sprintf      sprintf
+   #define stbte__sizeof(s)    
+#endif
+
+static int stbte__float_control(int x0, int y0, int w, float minv, float maxv, float scale, const char *fmt, float *value, int colormode, int id)
 {
    int x1 = x0+w;
    int y1 = y0+11;
-   int over = stbte__hittest(x0,y0,x1,y1,id);
    switch (stbte__ui.event) {
       case STBTE__paint: {
          char text[32];
-         sprintf(text, fmt ? fmt : "%6.2f", *value);
+         stbte__sprintf(text stbte__sizeof(text), fmt ? fmt : "%6.2f", *value);
          stbte__draw_textbox(x0,y0,x1,y1, text, 1,2, colormode, STBTE__INDEX_FOR_ID(id,0,0));
          break;
       }
@@ -2283,7 +2277,6 @@ static void stbte__alert(const char *msg)
 
 static void stbte__brush_predict(stbte_tilemap *tm, short result[])
 {
-   int layer_to_paint = tm->cur_layer;
    stbte__tileinfo *ti;
    int i;
 
@@ -2322,7 +2315,6 @@ static void stbte__brush_predict(stbte_tilemap *tm, short result[])
 
 static void stbte__brush(stbte_tilemap *tm, int x, int y)
 {
-   int layer_to_paint = tm->cur_layer;
    stbte__tileinfo *ti;
 
    // find lowest legit layer to paint it on, and put it there
@@ -2634,7 +2626,6 @@ static void stbte__clear_stack(stbte_tilemap *tm, short result[])
 static void stbte__fillrect(stbte_tilemap *tm, int x0, int y0, int x1, int y1, int fill)
 {
    int i,j;
-   int x=x0,y=y0;
 
    stbte__begin_undo(tm);
    if (x0 > x1) i=x0,x0=x1,x1=i;
@@ -2734,6 +2725,7 @@ static int stbte__in_rect(int x, int y, int x0, int y0, int w, int h)
    return x >= x0 && x < x0+w && y >= y0 && y < y0+h;
 }
 
+#ifdef STBTE_ALLOW_LINK
 static int stbte__in_src_rect(int x, int y)
 {
    return stbte__in_rect(x,y, stbte__ui.copy_src_x, stbte__ui.copy_src_y, stbte__ui.copy_width, stbte__ui.copy_height);
@@ -2743,6 +2735,7 @@ static int stbte__in_dest_rect(int x, int y, int destx, int desty)
 {
    return stbte__in_rect(x,y, destx, desty, stbte__ui.copy_width, stbte__ui.copy_height);
 }
+#endif
 
 static void stbte__paste(stbte_tilemap *tm, int mapx, int mapy)
 {
@@ -2934,9 +2927,6 @@ static void stbte__tile_paint(stbte_tilemap *tm, int sx, int sy, int mapx, int m
 {
    int i;
    int id = STBTE__IDMAP(mapx,mapy);
-   int x0=sx, y0=sy;
-   int x1=sx+tm->spacing_x, y1=sy+tm->spacing_y;
-   int over = stbte__hittest(x0,y0,x1,y1, id);
    short *data = tm->data[mapy][mapx];
    short temp[STBTE_MAX_LAYERS];
 
@@ -3366,7 +3356,7 @@ static int stbte__info_value(const char *label, int x, int y, int val, int digit
    if (stbte__ui.event == STBTE__paint) {
       int off = 9-stbte__get_char_width(label[0]);
       char text[16];
-      sprintf(text, label, digits, val);
+      stbte__sprintf(text stbte__sizeof(text), label, digits, val);
       stbte__draw_text_core(x+off,y, text, 999, STBTE__TEXTCOLOR(STBTE__cpanel),1);
    }
    if (id) {
@@ -3414,7 +3404,7 @@ static void stbte__info(stbte_tilemap *tm, int x0, int y0, int w, int h)
 
 static void stbte__layers(stbte_tilemap *tm, int x0, int y0, int w, int h)
 {
-   static char *propmodes[3] = {
+   static const char *propmodes[3] = {
       "default", "always", "never"
    };
    int num_rows;
@@ -3449,7 +3439,7 @@ static void stbte__layers(stbte_tilemap *tm, int x0, int y0, int w, int h)
       int disabled = (tm->solo_layer >= 0 && tm->solo_layer != i);
       if (i-tm->layer_scroll >= 0 && i-tm->layer_scroll < num_rows) {
          if (str == NULL)
-            sprintf(str=text, "%2d", i+1);
+            stbte__sprintf(str=text stbte__sizeof(text), "%2d", i+1);
          if (stbte__button(STBTE__clayer_button, str, x0,y,(i+1<10)*2,xoff-2, STBTE__ID(STBTE__layer,i), tm->cur_layer==i,0))
             tm->cur_layer = (tm->cur_layer == i ? -1 : i);
          if (stbte__layerbutton(x0+xoff +  0,y+1,'H',STBTE__ID(STBTE__hide,i), tm->layerinfo[i].hidden,disabled,STBTE__clayer_hide))
@@ -3501,10 +3491,7 @@ static void stbte__categories(stbte_tilemap *tm, int x0, int y0, int w, int h)
 
 static void stbte__tile_in_palette(stbte_tilemap *tm, int x, int y, int slot)
 {
-   stbte__tileinfo *t = &tm->tiles[slot];
-   int x0=x, y0=y, x1 = x+tm->palette_spacing_x - 1, y1 = y+tm->palette_spacing_y;
    int id = STBTE__ID(STBTE__palette, slot);
-   int over = stbte__hittest(x0,y0,x1,y1, id);
    switch (stbte__ui.event) {
       case STBTE__paint:
          stbte__draw_rect(x,y,x+tm->palette_spacing_x-1,y+tm->palette_spacing_x-1, STBTE_COLOR_TILEPALETTE_BACKGROUND);
@@ -3561,15 +3548,10 @@ static void stbte__palette_of_tiles(stbte_tilemap *tm, int x0, int y0, int w, in
    stbte__scrollbar(x1-4, y0+6, y1-2, &tm->palette_scroll, 0, num_total_rows, num_vis_rows, STBTE__ID(STBTE__scrollbar_id, STBTE__palette));
 }
 
-static float stbte__linear_remap(float n, float x0, float x1, float y0, float y1)
-{
-   return (n-x0)/(x1-x0)*(y1-y0) + y0;
-}
-
 static float stbte__saved;
 static void stbte__props_panel(stbte_tilemap *tm, int x0, int y0, int w, int h)
 {
-   int x1 = x0+w, y1 = y0+h;
+   int x1 = x0+w;
    int i;
    int y = y0 + 5, x = x0+2;
    int slider_width = 60;
@@ -3585,8 +3567,8 @@ static void stbte__props_panel(stbte_tilemap *tm, int x0, int y0, int w, int h)
    for (i=0; i < STBTE_MAX_PROPERTIES; ++i) {
       unsigned int n = STBTE_PROP_TYPE(i, data, p);
       if (n) {
-         char *s = STBTE_PROP_NAME(i, data, p);
-         if (s == NULL) s = "";
+         char *s = (char*) STBTE_PROP_NAME(i, data, p);
+         if (s == NULL) s = (char*) "";
          switch (n & 3) {
             case STBTE_PROP_bool: {
                int flag = (int) p[i];

+ 7 - 1
stb_vorbis.c

@@ -4990,7 +4990,13 @@ stb_vorbis * stb_vorbis_open_file(FILE *file, int close_on_free, int *error, con
 
 stb_vorbis * stb_vorbis_open_filename(const char *filename, int *error, const stb_vorbis_alloc *alloc)
 {
-   FILE *f = fopen(filename, "rb");
+   FILE *f;
+#if defined(_WIN32) && defined(__STDC_WANT_SECURE_LIB__)
+   if (0 != fopen_s(&f, filename, "rb"))
+      f = NULL;
+#else
+   f = fopen(filename, "rb");
+#endif
    if (f) 
       return stb_vorbis_open_file(f, TRUE, error, alloc);
    if (error) *error = VORBIS_file_open_failure;

+ 2 - 2
stb_voxel_render.h

@@ -3552,7 +3552,7 @@ void stbvox_set_buffer(stbvox_mesh_maker *mm, int mesh, int slot, void *buffer,
    stbvox_bring_up_to_date(mm);
    mm->output_buffer[mesh][slot] = (char *) buffer;
    mm->output_cur   [mesh][slot] = (char *) buffer;
-   mm->output_len   [mesh][slot] = len;
+   mm->output_len   [mesh][slot] = (int) len;
    mm->output_end   [mesh][slot] = (char *) buffer + len;
    for (i=0; i < STBVOX_MAX_MESH_SLOTS; ++i) {
       if (mm->output_buffer[mesh][i]) {
@@ -3568,7 +3568,7 @@ void stbvox_set_default_mesh(stbvox_mesh_maker *mm, int mesh)
 
 int stbvox_get_quad_count(stbvox_mesh_maker *mm, int mesh)
 {
-   return (mm->output_cur[mesh][0] - mm->output_buffer[mesh][0]) / mm->output_size[mesh][0];
+   return (int) ((mm->output_cur[mesh][0] - mm->output_buffer[mesh][0]) / mm->output_size[mesh][0]);
 }
 
 stbvox_input_description *stbvox_get_input_description(stbvox_mesh_maker *mm)

+ 1 - 1
tests/image_test.c

@@ -113,7 +113,7 @@ int main(int argc, char **argv)
             printf("FAILED 4\n");
       }
    } else {
-      int i, nope=0;
+      int i;
       #ifdef PNGSUITE_PRIMARY
       char **files = stb_readdir_files("pngsuite/primary");
       #else

+ 3 - 0
tests/image_write_test.c

@@ -1,3 +1,6 @@
+#ifdef __clang__
+#define STBIWDEF static inline
+#endif
 #define STB_IMAGE_WRITE_STATIC
 #define STB_IMAGE_WRITE_IMPLEMENTATION
 #include "stb_image_write.h"

+ 7 - 3
tests/resample_test.cpp

@@ -1,3 +1,4 @@
+#define _CRT_SECURE_NO_WARNINGS
 #include <stdlib.h>
 #include <stdio.h>
 
@@ -56,8 +57,11 @@ void stbir_progress(float p)
 	STBIR_ASSERT(p >= 0 && p <= 1);
 }
 
-#define STBIR_PROGRESS_REPORT stbir_progress
+#ifdef __clang__
+#define STBIRDEF static inline
+#endif
 
+#define STBIR_PROGRESS_REPORT stbir_progress
 #define STB_IMAGE_RESIZE_IMPLEMENTATION
 #define STB_IMAGE_RESIZE_STATIC
 #include "stb_image_resize.h"
@@ -127,7 +131,7 @@ inline float mtfrand()
 	return (float)(mtrand() % ninenine)/ninenine;
 }
 
-static void resizer(int argc, char **argv)
+void resizer(int argc, char **argv)
 {
 	unsigned char* input_pixels;
 	unsigned char* output_pixels;
@@ -144,7 +148,7 @@ static void resizer(int argc, char **argv)
 	exit(0);
 }
 
-static void performance(int argc, char **argv)
+void performance(int argc, char **argv)
 {
 	unsigned char* input_pixels;
 	unsigned char* output_pixels;

+ 32 - 30
tests/stb.c

@@ -2,6 +2,7 @@
  * Unit tests for "stb.h"
  */
 
+#define _CRT_SECURE_NO_WARNINGS
 //#include <windows.h>
 #include <stdio.h>
 #include <string.h>
@@ -110,8 +111,8 @@ void test_classes(void)
     while ((psize % s) > (psize >> 3)) {
       psize += kPageSize;
     }
-    class_to_pages[cl] = psize >> kPageShift;
-    wasted_pages += psize;
+    class_to_pages[cl] = (int) (psize >> kPageShift);
+    wasted_pages += (int) psize;
   }
 
   printf("TCMalloc can waste as much as %d memory on one-shot allocations\n", wasted_pages);
@@ -356,10 +357,10 @@ void test_threads2(void)
 
 char tc[] = "testing compression test quick test voila woohoo what the hell";
 
-char storage1[1 << 23];
-int test_compression(char *buffer, int length)
+unsigned char storage1[1 << 23];
+int test_compression(unsigned char *buffer, int length)
 {
-   char *storage2;
+   unsigned char *storage2;
    int c_len = stb_compress(storage1, buffer, length);
    int dc_len;
    printf("Compressed %d to %d\n", length, c_len);
@@ -421,7 +422,7 @@ stb_uint stb_adler32_old(stb_uint adler32, stb_uchar *buffer, stb_uint buflen)
    return (s2 << 16) + s1;
 }
 
-static int sample_test[3][5] =
+int sample_test[3][5] =
 {
    { 1,2,3,4,5 },
    { 6,7,8,9,10, },
@@ -1579,10 +1580,10 @@ struct
    char *digest;
 } sha1_tests[] =
 {
-   24,
+{   24,
 "616263",
 "a9993e364706816aba3e25717850c26c9cd0d89d",
-
+},{
    1304,
 "ec29561244ede706b6eb30a1c371d74450a105c3f9735f7fa9fe38cf67f304a5736a106e"
 "92e17139a6813b1c81a4f3d3fb9546ab4296fa9f722826c066869edacd73b25480351858"
@@ -1590,7 +1591,7 @@ struct
 "e31cb413ae29810fd794cad5dfaf29ec43cb38d198fe4ae1da2359780221405bd6712a53"
 "05da4b1b737fce7cd21c0eb7728d08235a9011",
 "970111c4e77bcc88cc20459c02b69b4aa8f58217",
-
+},{
    2096,
 "5fc2c3f6a7e79dc94be526e5166a238899d54927ce470018fbfd668fd9dd97cbf64e2c91"
 "584d01da63be3cc9fdff8adfefc3ac728e1e335b9cdc87f069172e323d094b47fa1e652a"
@@ -1601,7 +1602,7 @@ struct
 "e485050e4bbb6235574fc0102be8f7a306d6e8de6ba6becf80f37415b57f9898a5824e77"
 "414197422be3d36a6080",
    "0423dc76a8791107d14e13f5265b343f24cc0f19",
-
+},{
    2888,
 "0f865f46a8f3aed2da18482aa09a8f390dc9da07d51d1bd10fe0bf5f3928d5927d08733d"
 "32075535a6d1c8ac1b2dc6ba0f2f633dc1af68e3f0fa3d85e6c60cb7b56c239dc1519a00"
@@ -1615,7 +1616,7 @@ struct
 "6afbb27dbbd300477d70c371e7b8963812f5ed4fb784fb2f3bd1d3afe883cdd47ef32bea"
 "ea",
    "6692a71d73e00f27df976bc56df4970650d90e45",
-
+},{
    3680,
 "4893f1c763625f2c6ce53aacf28026f14b3cd8687e1a1d3b60a81e80fcd1e2b038f9145a"
 "b64a0718f948f7c3c9ac92e3d86fb669a5257da1a18c776291653688338210a3242120f1"
@@ -1631,7 +1632,7 @@ struct
 "73c30b39920e726fe861b72483a3f886269ab7a8eefe952f35d25c4eb7f443f4f3f26e43"
 "d51fb54591e6a6dad25fcdf5142033084e5624bdd51435e77dea86b8",
    "dc5859dd5163c4354d5d577b855fa98e37f04384",
-
+},{
    4472,
 "cf494c18a4e17bf03910631471bca5ba7edea8b9a63381e3463517961749848eb03abefd"
 "4ce676dece3740860255f57c261a558aa9c7f11432f549a9e4ce31d8e17c79450ce2ccfc"
@@ -1650,7 +1651,7 @@ struct
 "317746270599424b9248791a0780449c1eabbb9459cc1e588bfd74df9b1b711c85c09d8a"
 "a171b309281947e8f4b6ac438753158f4f36fa",
    "4c17926feb6e87f5bca7890d8a5cde744f231dab",
-
+},{
    5264,
 "8236153781bd2f1b81ffe0def1beb46f5a70191142926651503f1b3bb1016acdb9e7f7ac"
 "ced8dd168226f118ff664a01a8800116fd023587bfba52a2558393476f5fc69ce9c65001"
@@ -1672,7 +1673,7 @@ struct
 "5cf62845c2009980a4dfa69fbc7e5a0b1bb20a5958ca967aec68eb31dd8fccca9afcd30a"
 "26bab26279f1bf6724ff",
    "11863b483809ef88413ca9b0084ac4a5390640af",
-
+},{
    6056,
 "31ec3c3636618c7141441294fde7e72366a407fa7ec6a64a41a7c8dfda150ca417fac868"
 "1b3c5be253e3bff3ab7a5e2c01b72790d95ee09b5362be835b4d33bd20e307c3c702aa15"
@@ -1697,7 +1698,7 @@ struct
 "386719b28a09a8e5934722202beb3429899b016dfeb972fee487cdd8d18f8a681042624f"
 "51",
    "f43937922444421042f76756fbed0338b354516f",
-
+},{
    6848,
 "21b9a9686ec200456c414f2e6963e2d59e8b57e654eced3d4b57fe565b51c9045c697566"
 "44c953178f0a64a6e44d1b46f58763c6a71ce4c373b0821c0b3927a64159c32125ec916b"
@@ -1724,7 +1725,7 @@ struct
 "aac4130293f6f62ae6d50c0d0c3b9876f0728923a94843785966a27555dd3ce68602e7d9"
 "0f7c7c552f9bda4969ec2dc3e30a70620db6300e822a93e633ab9a7a",
    "5d4d18b24b877092188a44be4f2e80ab1d41e795",
-
+},{
    7640,
 "1c87f48f4409c3682e2cf34c63286dd52701b6c14e08669851a6dc8fa15530ad3bef692c"
 "7d2bf02238644561069df19bdec3bccae5311fce877afc58c7628d08d32d9bd2dc1df0a6"
@@ -1754,7 +1755,7 @@ struct
 "e147c723aca999015230d22c917730b935e902092f83e0a8e6db9a75d2626e0346e67e40"
 "8d5b815439dab8ccb8ea23f828fff6916c4047",
    "32e0f5d40ceec1fbe45ddd151c76c0b3fef1c938",
-
+},{
    8432,
 "084f04f8d44b333dca539ad2f45f1d94065fbb1d86d2ccf32f9486fe98f7c64011160ec0"
 "cd66c9c7478ed74fde7945b9c2a95cbe14cedea849978cc2d0c8eb0df48d4834030dfac2"
@@ -1787,7 +1788,7 @@ struct
 "b5200b7892554b59532ac63af3bdef590b57bd5df4fbf38d2b3fa540fa5bf89455802963"
 "036bd173fe3967ed1b7d",
    "ee976e4ad3cad933b283649eff9ffdb41fcccb18",
-
+},{
    9224,
 "bd8320703d0cac96a96aeefa3abf0f757456bf42b3e56f62070fc03e412d3b8f4e4e427b"
 "c47c4600bb423b96de6b4910c20bc5c476c45feb5b429d4b35088813836fa5060ceb26db"
@@ -1823,7 +1824,7 @@ struct
 "42a756a3e22123cbf38c429373c6a8663130c24b24b2690b000013960b1c46a32d1d5397"
 "47",
    "2df09b10933afedfcd3f2532dfd29e7cb6213859",
-
+},{
    10016,
 "7a94978bec7f5034b12c96b86498068db28cd2726b676f54d81d8d7350804cc106bead8a"
 "252b465a1f413b1c41e5697f8cece49ec0dea4dfb9fa7b1bfe7a4a00981875b420d094bb"
@@ -1861,7 +1862,7 @@ struct
 "5740090c1b165ecae7dec0b341d60a88f46d7ad8624aac231a90c93fad61fcfbbea12503"
 "59fcd203862a6b0f1d71ac43db6c58a6b60c2c546edc12dd658998e8",
    "f32e70862a16e3e8b199e9d81a9949d66f812cad",
-
+},{
    10808,
 "88dd7f273acbe799219c23184782ac0b07bade2bc46b4f8adbd25ed3d59c0fd3e2931638"
 "837d31998641bbb7374c7f03d533ca60439ac4290054ff7659cc519bdda3dff2129a7bdb"
@@ -1902,7 +1903,7 @@ struct
 "1fd561274392ee6ee1a14424d5c134a69bcb4333079400f03615952fc4c99bf03f5733a8"
 "dc71524269fc5c648371f5f3098314d9d10258",
    "08632c75676571a5db5971f5d99cb8de6bf1792a",
-
+},{
    11600,
 "85d43615942fcaa449329fd1fe9efb17545eb252cac752228f1e9d90955a3cf4e72cb116"
 "3c3d8e93ccb7e4826206ff58b3e05009ee82ab70943db3f18a32925d6d5aed1525c91673"
@@ -1946,7 +1947,7 @@ struct
 "b16dcde529248a477628067d13d0cb3bf51776f4d39fb3fbc5f669e91019323e40360e4b"
 "78b6584f077bf9e03b66",
    "ab7213f6becb980d40dc89fbda0ca39f225a2d33",
-
+},{
    12392,
 "7ae3ca60b3a96be914d24980fb5652eb68451fed5fa47abe8e771db8301fbd5331e64753"
 "93d96a4010d6551701e5c23f7ecb33bec7dd7bade21381e9865d410c383a139cb4863082"
@@ -1993,7 +1994,7 @@ struct
 "09d1af296eb3121d782650e7d038063bab5fa854aac77de5ffebeb53d263f521e3fc02ac"
 "70",
    "b0e15d39025f5263e3efa255c1868d4a37041382",
-
+},{
    13184,
 "fa922061131282d91217a9ff07463843ae34ff7f8c28b6d93b23f1ea031d5020aa92f660"
 "8c3d3df0ee24a8958fd41af880ee454e36e26438defb2de8f09c018607c967d2f0e8b80a"
@@ -2042,7 +2043,7 @@ struct
 "b409cc322354672a21ea383e870d047551a3af71aaf2f44f49a859cf001e61b592dd036f"
 "c6625bf7b91ea0fb78c1563cceb8c4345bf4a9fbe6ee2b6bf5e81083",
    "8b6d59106f04300cb57c7c961945cd77f3536b0a",
-
+},{
    13976,
 "162cca41155de90f6e4b76a34261be6666ef65bdb92b5831b47604ce42e0c6c8d2eda265"
 "ab9a3716809bf2e745e7831a41768d0f6349a268d9ac6e6adfb832a5d51b75d7951cf60e"
@@ -2094,7 +2095,7 @@ struct
 "7635eed03558ac673d17280769b2368056276d5d72f5dbc75525f8a7558bd90b544aa6cb"
 "dd964e6c70be79441969bfdf471f17a2dc0c92",
    "6144c4786145852e2a01b20604c369d1b9721019",
-
+},{
    14768,
 "c9bed88d93806b89c2d028866842e6542ab88c895228c96c1f9f05125f8697c7402538b0"
 "6465b7ae33daef847500f73d20c598c86e4804e633e1c4466e61f3ed1e9baadc5723bbed"
@@ -2149,6 +2150,7 @@ struct
 "f5e1f03c2280e71c6e1ae21312d4ff163eee16ebb1fdee8e887bb0d453829b4e6ed5fa70"
 "8f2053f29b81e277be46",
    "a757ead499a6ec3d8ab9814f839117354ae563c8"
+}
 };
 
 void test_sha1(void)
@@ -2257,14 +2259,14 @@ void do_compressor(int argc,char**argv)
 {
    char *p;
    size_t slen;
-   int len;
+   unsigned int len;
 
    int window;
    if (argc == 2) {
       p = stb_file(argv[1], &slen);
-      len = (int) slen;
+      len = (unsigned int) slen;
       if (p) {
-         int dlen, clen = stb_compress_tofile("data/dummy.bin", p, len);
+         unsigned int dlen, clen = stb_compress_tofile("data/dummy.bin", p, len);
          char *q = stb_decompress_fromfile("data/dummy.bin", &dlen);
 
          if (len != dlen) {
@@ -2398,7 +2400,7 @@ done:
 
 
 
-
+#if 0 // parser generator
 //////////////////////////////////////////////////////////////////////////
 //
 //   stb_parser
@@ -2946,7 +2948,7 @@ void test_parser_generator(void)
    parser_destroy(p);
 }
 #endif
-
+#endif // parser generator
 
 #if 0
 // stb_threadtest.c

+ 7 - 7
tests/stb_cpp.cpp

@@ -11,7 +11,7 @@
 //#include "stb_file.h"
 
 int count;
-void c(int truth, char *error)
+void c(int truth, const char *error)
 {
    if (!truth) {
       fprintf(stderr, "Test failed: %s\n", error);
@@ -19,7 +19,7 @@ void c(int truth, char *error)
    }
 }
 
-char *expects(stb_matcher *m, char *s, int result, int len, char *str)
+char *expects(stb_matcher *m, char *s, int result, int len, const char *str)
 {
    int res2,len2=0;
    res2 = stb_lex(m, s, &len2);
@@ -31,7 +31,7 @@ void test_lex(void)
 {
    stb_matcher *m = stb_lex_matcher();
    //         tok_en5 .3 20.1 20. .20 .1
-   char *s = "tok_en5.3 20.1 20. .20.1";
+   char *s = (char*) "tok_en5.3 20.1 20. .20.1";
 
    stb_lex_item(m, "[a-zA-Z_][a-zA-Z0-9_]*", 1   );
    stb_lex_item(m, "[0-9]*\\.?[0-9]*"      , 2   );
@@ -53,22 +53,22 @@ void test_lex(void)
 int main(int argc, char **argv)
 {
    char *p;
-   p = "abcdefghijklmnopqrstuvwxyz";
+   p = (char*) "abcdefghijklmnopqrstuvwxyz";
    c(stb_ischar('c', p), "stb_ischar 1");
    c(stb_ischar('x', p), "stb_ischar 2");
    c(!stb_ischar('#', p), "stb_ischar 3");
    c(!stb_ischar('X', p), "stb_ischar 4");
-   p = "0123456789";
+   p = (char*) "0123456789";
    c(!stb_ischar('c', p), "stb_ischar 5");
    c(!stb_ischar('x', p), "stb_ischar 6");
    c(!stb_ischar('#', p), "stb_ischar 7");
    c(!stb_ischar('X', p), "stb_ischar 8");
-   p = "#####";
+   p = (char*) "#####";
    c(!stb_ischar('c', p), "stb_ischar a");
    c(!stb_ischar('x', p), "stb_ischar b");
    c(stb_ischar('#', p), "stb_ischar c");
    c(!stb_ischar('X', p), "stb_ischar d");
-   p = "xXyY";
+   p = (char*) "xXyY";
    c(!stb_ischar('c', p), "stb_ischar e");
    c(stb_ischar('x', p), "stb_ischar f");
    c(!stb_ischar('#', p), "stb_ischar g");

+ 7 - 1
tests/stretchy_buffer_test.c

@@ -1 +1,7 @@
-#include "stretchy_buffer.h"
+#include "stretchy_buffer.h"
+
+void test_sb(void)
+{
+   char *x = NULL;
+   sb_push(x, 'x');
+}

+ 37 - 0
tests/test.sbm

@@ -0,0 +1,37 @@
+[compilers]
+VS2015 for x64, vcvars_2015_x64
+VC6           , vcvars_vc6
+VS2008 for x86, vcvars_2008_x86
+VS2013 for x86, vcvars_2013_x86
+VS2015 for x86, vcvars_2015_x86
+clang-cl for x64, vcvars_2015_x64, clang-cl
+clang-cl for x86, vcvars_2015_x86, clang32-cl
+#these batch files don't work on my machine
+#VS2008 for x64, vcvars_2008_x64
+#VS2013 for x64, vcvars_2013_x64
+
+[args]
+-I .. -W3 -WX -D_DEBUG
+
+[link]
+advapi32.lib
+
+[projects]
+c_lexer_test.c
+image_test.c image_write_test.c
+test_cpp_compilation.cpp stb_cpp.cpp ../stb_vorbis.c
+resample_test.cpp 
+-DTT_TEST test_c_compilation.c test_truetype.c 
+main.c stb.c 
+main.c stretchy_buffer_test.c
+main.c test_c_compilation.c
+main.c test_c_lexer.c
+main.c test_dxt.c
+main.c test_easyfont.c
+main.c test_image.c
+main.c test_image_write.c
+main.c test_perlin.c
+main.c test_sprintf.c
+main.c test_vorbis.c ../stb_vorbis.c
+main.c test_voxel.c
+main.c textedit_sample.c

+ 23 - 4
tests/test_cpp_compilation.cpp

@@ -3,6 +3,7 @@
 #include "stb_sprintf.h"
 
 #define STB_IMAGE_WRITE_STATIC
+#define STBIWDEF static inline
 
 #define STB_IMAGE_WRITE_IMPLEMENTATION
 #define STB_TRUETYPE_IMPLEMENTATION
@@ -57,9 +58,18 @@ void my_free(void *) { }
 #define STB_IMAGE_RESIZE_IMPLEMENTATION
 #include "stb_image_resize.h"
 
-#include "stretchy_buffer.h"
+//#include "stretchy_buffer.h"  // deprecating
 
 
+// avoid unused-function complaints
+void dummy2(void)
+{
+   stb_easy_font_spacing(1.0);
+   stb_easy_font_print(0,0,NULL,NULL,NULL,0);
+   stb_easy_font_width(NULL);
+   stb_easy_font_height(NULL);
+}
+
 
 ////////////////////////////////////////////////////////////
 //
@@ -113,7 +123,7 @@ int insert_chars(STB_TEXTEDIT_STRING *str, int pos, STB_TEXTEDIT_CHARTYPE *newte
 
 // define all the #defines needed 
 
-#define KEYDOWN_BIT                    0x80000000
+#define KEYDOWN_BIT                    0x40000000
 
 #define STB_TEXTEDIT_STRINGLEN(tc)     ((tc)->stringlen)
 #define STB_TEXTEDIT_LAYOUTROW         layout_func
@@ -125,8 +135,8 @@ int insert_chars(STB_TEXTEDIT_STRING *str, int pos, STB_TEXTEDIT_CHARTYPE *newte
 #define STB_TEXTEDIT_DELETECHARS       delete_chars
 #define STB_TEXTEDIT_INSERTCHARS       insert_chars
 
-#define STB_TEXTEDIT_K_SHIFT           0x40000000
-#define STB_TEXTEDIT_K_CONTROL         0x20000000
+#define STB_TEXTEDIT_K_SHIFT           0x20000000
+#define STB_TEXTEDIT_K_CONTROL         0x10000000
 #define STB_TEXTEDIT_K_LEFT            (KEYDOWN_BIT | 1) // actually use VK_LEFT, SDLK_LEFT, etc
 #define STB_TEXTEDIT_K_RIGHT           (KEYDOWN_BIT | 2) // VK_RIGHT
 #define STB_TEXTEDIT_K_UP              (KEYDOWN_BIT | 3) // VK_UP
@@ -149,3 +159,12 @@ int insert_chars(STB_TEXTEDIT_STRING *str, int pos, STB_TEXTEDIT_CHARTYPE *newte
 #include "stb_textedit.h"
 
 
+void dummy3(void)
+{
+  stb_textedit_click(0,0,0,0);
+  stb_textedit_drag(0,0,0,0);
+  stb_textedit_cut(0,0);
+  stb_textedit_key(0,0,0);
+  stb_textedit_initialize_state(0,0);
+  stb_textedit_paste(0,0,0,0);
+}

+ 9 - 0
tests/test_easyfont.c

@@ -1 +1,10 @@
 #include "stb_easy_font.h"
+
+void ef_dummy(void)
+{
+   // suppress unsused-function warning
+   stb_easy_font_spacing(0);
+   stb_easy_font_print(0,0,0,0,0,0);
+   stb_easy_font_width(0);
+   stb_easy_font_height(0);
+}

+ 4 - 0
tests/test_image.c

@@ -1,3 +1,7 @@
+#ifdef __clang__
+#define STBIDEF static inline
+#endif
+
 #define STB_IMAGE_STATIC
 #define STB_IMAGE_IMPLEMENTATION
 #include "stb_image.h"

+ 4 - 0
tests/test_image_write.c

@@ -1,3 +1,7 @@
+#ifdef __clang__
+#define STBIWDEF static inline
+#endif
+
 #define STB_IMAGE_WRITE_IMPLEMENTATION
 #define STB_IMAGE_WRITE_STATIC
 #include "stb_image_write.h"

+ 0 - 4
tests/test_vorbis.c

@@ -1,7 +1,3 @@
-#define STB_IMAGE_STATIC
-#define STB_IMAGE_IMPLEMENTATION
-#include "stb_image.h"
-
 #define STB_VORBIS_HEADER_ONLY
 #include "stb_vorbis.c"
 #include "stb.h"

+ 10 - 0
tests/textedit_sample.c

@@ -82,3 +82,13 @@ int insert_chars(STB_TEXTEDIT_STRING *str, int pos, STB_TEXTEDIT_CHARTYPE *newte
 
 #define STB_TEXTEDIT_IMPLEMENTATION
 #include "stb_textedit.h"
+
+void dummy3(void)
+{
+  stb_textedit_click(0,0,0,0);
+  stb_textedit_drag(0,0,0,0);
+  stb_textedit_cut(0,0);
+  stb_textedit_key(0,0,0);
+  stb_textedit_initialize_state(0,0);
+  stb_textedit_paste(0,0,0,0);
+}

Някои файлове не бяха показани, защото твърде много файлове са промени