فهرست منبع

Use XGetErrorText() instead of our own table

This fixes segfaults when the error code is not in the table
Ján Mlynek 12 سال پیش
والد
کامیت
ecadb4faae
1فایلهای تغییر یافته به همراه6 افزوده شده و 14 حذف شده
  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;
 }