H. Verbeet : wined3d: Better version string parsing for VENDOR_NVIDIA
in
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Jan 19 05:46:38 CST 2006
Module: wine
Branch: refs/heads/master
Commit: b88407268727d95b11f9d2c72ad978bc6ef42fa5
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=b88407268727d95b11f9d2c72ad978bc6ef42fa5
Author: H. Verbeet <hverbeet at gmail.com>
Date: Thu Jan 19 12:39:37 2006 +0100
wined3d: Better version string parsing for VENDOR_NVIDIA in
IWineD3DImpl_FillGLCaps.
---
dlls/wined3d/directx.c | 44 ++++++++++++++++++++++++++------------------
1 files changed, 26 insertions(+), 18 deletions(-)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 466d3e4..07543bb 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -268,30 +268,38 @@ static BOOL IWineD3DImpl_FillGLCaps(Wine
switch (gl_info->gl_vendor) {
case VENDOR_NVIDIA:
gl_string_cursor = strstr(gl_string, "NVIDIA");
+ if (!gl_string_cursor) {
+ ERR_(d3d_caps)("Invalid nVidia version string: %s\n", debugstr_a(gl_string));
+ break;
+ }
+
gl_string_cursor = strstr(gl_string_cursor, " ");
- while (*gl_string_cursor && ' ' == *gl_string_cursor) ++gl_string_cursor;
- if (*gl_string_cursor) {
- char tmp[16];
- int cursor = 0;
+ if (!gl_string_cursor) {
+ ERR_(d3d_caps)("Invalid nVidia version string: %s\n", debugstr_a(gl_string));
+ break;
+ }
- while (*gl_string_cursor <= '9' && *gl_string_cursor >= '0') {
- tmp[cursor++] = *gl_string_cursor;
- ++gl_string_cursor;
- }
- tmp[cursor] = 0;
- major = atoi(tmp);
+ while (*gl_string_cursor == ' ') {
+ ++gl_string_cursor;
+ }
- if (*gl_string_cursor != '.') WARN_(d3d_caps)("malformed GL_VERSION (%s)\n", debugstr_a(gl_string));
+ if (!*gl_string_cursor) {
+ ERR_(d3d_caps)("Invalid nVidia version string: %s\n", debugstr_a(gl_string));
+ break;
+ }
+
+ major = atoi(gl_string_cursor);
+ while (*gl_string_cursor <= '9' && *gl_string_cursor >= '0') {
++gl_string_cursor;
+ }
- cursor = 0;
- while (*gl_string_cursor <= '9' && *gl_string_cursor >= '0') {
- tmp[cursor++] = *gl_string_cursor;
- ++gl_string_cursor;
- }
- tmp[cursor] = 0;
- minor = atoi(tmp);
+ if (*gl_string_cursor++ != '.') {
+ ERR_(d3d_caps)("Invalid nVidia version string: %s\n", debugstr_a(gl_string));
+ break;
}
+
+ minor = atoi(gl_string_cursor);
+
break;
case VENDOR_ATI:
More information about the wine-cvs
mailing list