Explorar o código

Fixed some potential instability or crash issues

Alex Szpakowski %!s(int64=12) %!d(string=hai) anos
pai
achega
4ae126ac44

+ 2 - 1
src/modules/graphics/opengl/wrap_Graphics.cpp

@@ -338,7 +338,8 @@ int w_newFont(lua_State *L)
 		int ret = luax_pconvobj(L, idxs, 2, "font", "newRasterizer");
 		if (ret != 0)
 		{
-			font_data->release();
+			if (font_data)
+				font_data->release();
 			return lua_error(L);
 		}
 	}

+ 4 - 2
src/modules/joystick/sdl/Joystick.cpp

@@ -42,7 +42,8 @@ Joystick::Joystick()
 
 	// Open all connected joysticks.
 	int numjoysticks = this->getNumJoysticks();
-	this->joysticks = (SDL_Joystick **)calloc(numjoysticks, sizeof(SDL_Joystick *));
+	if (numjoysticks > 0)
+		this->joysticks = (SDL_Joystick **)calloc(numjoysticks, sizeof(SDL_Joystick *));
 
 	for (int i = 0; i<numjoysticks; i++)
 		this->open(i);
@@ -79,7 +80,8 @@ void Joystick::reload()
 		throw love::Exception("%s", SDL_GetError());
 
 	int numjoysticks = this->getNumJoysticks();
-	this->joysticks = (SDL_Joystick **)calloc(numjoysticks, sizeof(SDL_Joystick *));
+	if (numjoysticks > 0)
+		this->joysticks = (SDL_Joystick **)calloc(numjoysticks, sizeof(SDL_Joystick *));
 
 	for (int i = 0; i<numjoysticks; i++)
 		this->open(i);

+ 1 - 1
src/modules/window/sdl/Window.cpp

@@ -134,7 +134,7 @@ bool Window::setWindow(int width, int height, WindowFlags *flags)
 			// FSAA might have caused the failure, disable it and try again
 			SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 0);
 			SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 0);
-			failed = SDL_SetVideoMode(width, height, 32, sdlflags) == 0;
+			failed = (surface = SDL_SetVideoMode(width, height, 32, sdlflags)) == 0;
 		}
 		if (failed)
 		{