Skip to content

Commit 0922182

Browse files
Sackzementslouken
authored andcommitted
Fix potential memory leak in SDL_render_gles2.c
1 parent dc2c83c commit 0922182

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/render/opengles2/SDL_render_gles2.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1699,6 +1699,8 @@ static bool GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
16991699
} else {
17001700
renderdata->glGenTextures(1, &data->texture_v);
17011701
if (!GL_CheckError("glGenTexures()", renderer)) {
1702+
SDL_free(data->pixel_data);
1703+
SDL_free(data);
17021704
return false;
17031705
}
17041706
}
@@ -1713,18 +1715,24 @@ static bool GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
17131715
} else {
17141716
renderdata->glGenTextures(1, &data->texture_u);
17151717
if (!GL_CheckError("glGenTexures()", renderer)) {
1718+
SDL_free(data->pixel_data);
1719+
SDL_free(data);
17161720
return false;
17171721
}
17181722
}
17191723
renderdata->glActiveTexture(GL_TEXTURE1);
17201724
renderdata->glBindTexture(data->texture_type, data->texture_u);
17211725
renderdata->glTexImage2D(data->texture_type, 0, format, (texture->w + 1) / 2, (texture->h + 1) / 2, 0, format, type, NULL);
17221726
if (!GL_CheckError("glTexImage2D()", renderer)) {
1727+
SDL_free(data->pixel_data);
1728+
SDL_free(data);
17231729
return false;
17241730
}
17251731
SDL_SetNumberProperty(SDL_GetTextureProperties(texture), SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_U_NUMBER, data->texture_u);
17261732

17271733
if (!SDL_GetYCbCRtoRGBConversionMatrix(texture->colorspace, texture->w, texture->h, 8)) {
1734+
SDL_free(data->pixel_data);
1735+
SDL_free(data);
17281736
return SDL_SetError("Unsupported YUV colorspace");
17291737
}
17301738
} else if (data->nv12) {
@@ -1734,18 +1742,24 @@ static bool GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
17341742
} else {
17351743
renderdata->glGenTextures(1, &data->texture_u);
17361744
if (!GL_CheckError("glGenTexures()", renderer)) {
1745+
SDL_free(data->pixel_data);
1746+
SDL_free(data);
17371747
return false;
17381748
}
17391749
}
17401750
renderdata->glActiveTexture(GL_TEXTURE1);
17411751
renderdata->glBindTexture(data->texture_type, data->texture_u);
17421752
renderdata->glTexImage2D(data->texture_type, 0, GL_LUMINANCE_ALPHA, (texture->w + 1) / 2, (texture->h + 1) / 2, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, NULL);
17431753
if (!GL_CheckError("glTexImage2D()", renderer)) {
1754+
SDL_free(data->pixel_data);
1755+
SDL_free(data);
17441756
return false;
17451757
}
17461758
SDL_SetNumberProperty(SDL_GetTextureProperties(texture), SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_UV_NUMBER, data->texture_u);
17471759

17481760
if (!SDL_GetYCbCRtoRGBConversionMatrix(texture->colorspace, texture->w, texture->h, 8)) {
1761+
SDL_free(data->pixel_data);
1762+
SDL_free(data);
17491763
return SDL_SetError("Unsupported YUV colorspace");
17501764
}
17511765
}
@@ -1757,6 +1771,8 @@ static bool GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
17571771
} else {
17581772
renderdata->glGenTextures(1, &data->texture);
17591773
if (!GL_CheckError("glGenTexures()", renderer)) {
1774+
SDL_free(data->pixel_data);
1775+
SDL_free(data);
17601776
return false;
17611777
}
17621778
}

0 commit comments

Comments
 (0)