@@ -2185,7 +2185,7 @@ var LibrarySDL = {
2185
2185
return flags ; // We support JPG, PNG, TIF because browsers do
2186
2186
} ,
2187
2187
2188
- IMG_Load_RW__deps : [ 'SDL_LockSurface' , 'SDL_FreeRW' , '$PATH_FS' , 'malloc ' , '$stringToNewUTF8 ' ] ,
2188
+ IMG_Load_RW__deps : [ 'SDL_LockSurface' , 'SDL_FreeRW' , '$PATH_FS' , '$withStackSave ' , '$stringToUTF8OnStack ' ] ,
2189
2189
IMG_Load_RW__proxy : 'sync' ,
2190
2190
IMG_Load_RW : function ( rwopsID , freeSrc ) {
2191
2191
try {
@@ -2200,18 +2200,13 @@ var LibrarySDL = {
2200
2200
func ( ) ;
2201
2201
}
2202
2202
}
2203
- var callStbImage = ( func , params ) => {
2204
- var x = _malloc ( { { { getNativeTypeSize ( 'i32' ) } } } ) ;
2205
- var y = _malloc ( { { { getNativeTypeSize ( 'i32' ) } } } ) ;
2206
- var comp = _malloc ( { { { getNativeTypeSize ( 'i32' ) } } } ) ;
2207
- addCleanup ( ( ) => {
2208
- _free ( x ) ;
2209
- _free ( y ) ;
2210
- _free ( comp ) ;
2211
- if ( data ) Module [ '_stbi_image_free' ] ( data ) ;
2212
- } ) ;
2203
+ var callStbImage = ( func , params ) => withStackSave ( ( ) => {
2204
+ var x = stackAlloc ( { { { getNativeTypeSize ( 'i32' ) } } } ) ;
2205
+ var y = stackAlloc ( { { { getNativeTypeSize ( 'i32' ) } } } ) ;
2206
+ var comp = stackAlloc ( { { { getNativeTypeSize ( 'i32' ) } } } ) ;
2213
2207
var data = Module [ '_' + func ] . apply ( null , params . concat ( [ x , y , comp , 0 ] ) ) ;
2214
2208
if ( ! data ) return null ;
2209
+ addCleanup ( ( ) => Module [ '_stbi_image_free' ] ( data ) ) ;
2215
2210
return {
2216
2211
rawData : true ,
2217
2212
data,
@@ -2220,7 +2215,7 @@ var LibrarySDL = {
2220
2215
size: { { { makeGetValue ( 'x' , 0 , 'i32' ) } } } * { { { makeGetValue ( 'y' , 0 , 'i32' ) } } } * { { { makeGetValue ( 'comp' , 0 , 'i32' ) } } } ,
2221
2216
bpp: { { { makeGetValue ( 'comp' , 0 , 'i32' ) } } }
2222
2217
} ;
2223
- }
2218
+ } ) ;
2224
2219
2225
2220
var rwops = SDL . rwops [ rwopsID ] ;
2226
2221
if ( rwops === undefined ) {
@@ -2245,10 +2240,7 @@ var LibrarySDL = {
2245
2240
if ( ! raw ) {
2246
2241
if ( raw === null ) err ( 'Trying to reuse preloaded image, but freePreloadedMediaOnUse is set!' ) ;
2247
2242
#if STB_IMAGE
2248
- var name = stringToNewUTF8 ( filename ) ;
2249
- addCleanup ( ( ) => {
2250
- _free ( name ) ;
2251
- } ) ;
2243
+ var name = stringToUTF8OnStack ( filename ) ;
2252
2244
raw = callStbImage ( 'stbi_load' , [ name ] ) ;
2253
2245
if ( ! raw ) return 0 ;
2254
2246
#else
0 commit comments