Move the API parameter validation out of Fence.cpp to libGLESv2.cpp.
TRAC #23446
Signed-off-by: Geoff Lang
Signed-off-by: Shannon Woods
Authored-by: Jamie Madill
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index b08ce3a..30ae7e6 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -4018,6 +4018,11 @@
return gl::error(GL_INVALID_OPERATION);
}
+ if (fenceObject->isFence() != GL_TRUE)
+ {
+ return gl::error(GL_INVALID_OPERATION);
+ }
+
fenceObject->finishFence();
}
}
@@ -4900,7 +4905,21 @@
return gl::error(GL_INVALID_OPERATION);
}
- fenceObject->getFenceiv(pname, params);
+ if (fenceObject->isFence() != GL_TRUE)
+ {
+ return gl::error(GL_INVALID_OPERATION);
+ }
+
+ switch (pname)
+ {
+ case GL_FENCE_STATUS_NV:
+ case GL_FENCE_CONDITION_NV:
+ break;
+
+ default: return gl::error(GL_INVALID_ENUM);
+ }
+
+ params[0] = fenceObject->getFencei(pname);
}
}
catch(std::bad_alloc&)
@@ -7056,6 +7075,11 @@
return gl::error(GL_INVALID_OPERATION, GL_TRUE);
}
+ if (fenceObject->isFence() != GL_TRUE)
+ {
+ return gl::error(GL_INVALID_OPERATION, GL_TRUE);
+ }
+
return fenceObject->testFence();
}
}