Browse Source

Use XGetErrorText() instead of our own table

This fixes segfaults when the error code is not in the table
Ján Mlynek 12 năm trước cách đây
mục cha
commit
ecadb4faae
1 tập tin đã thay đổi với 6 bổ sung14 xóa
  1. 6 14
      libobs-opengl/gl-x11.c

+ 6 - 14
libobs-opengl/gl-x11.c

@@ -26,19 +26,7 @@ static const GLenum ctx_attribs[] = {
 	None, 
 };
 
-static const char* __GLX_error_table[] = {
-	"Success",
-	"Bad Screen",
-	"Bad Attribute",
-	"No Extension",
-	"Bad Visual",
-	"Bad Content",
-	"Bad Value",
-	"Bad Enumeration"
-};
-
-#define GET_GLX_ERROR(x) \
-	__GLX_error_table[x]
+#define ERROR_TEXT_LEN 1024
 
 struct gl_windowinfo {
 	uint32_t id;
@@ -52,7 +40,11 @@ struct gl_platform {
 
 static int GLXErrorHandler(Display *disp, XErrorEvent *error)
 {
-	blog(LOG_ERROR, "GLX error: %s\n", GET_GLX_ERROR(error->error_code));
+	char error_buf[ERROR_TEXT_LEN];
+	
+	XGetErrorText(disp, error->error_code, error_buf, ERROR_TEXT_LEN);
+	blog(LOG_ERROR, "GLX error: %s\n", error_buf);
+	
 	return 0;
 }