Make sure the server never reports a version higher than what it
supports.
Signed-off-by: Keith Packard <[email protected]>
---
Xi/xiqueryversion.c | 33 +++++++++++++++++----------------
1 file changed, 17 insertions(+), 16 deletions(-)
diff --git a/Xi/xiqueryversion.c b/Xi/xiqueryversion.c
index 6c7b9c0..d5e5347 100644
--- a/Xi/xiqueryversion.c
+++ b/Xi/xiqueryversion.c
@@ -70,12 +70,24 @@ ProcXIQueryVersion(ClientPtr client)
pXIClient = dixLookupPrivate(&client->devPrivates, XIClientPrivateKey);
+ /* Compute the minimum of the client requested and server supported
versions */
+
+ if (version_compare(XIVersion.major_version, XIVersion.minor_version,
+ stuff->major_version, stuff->minor_version) > 0) {
+ major = stuff->major_version;
+ minor = stuff->minor_version;
+ }
+ else {
+ major = XIVersion.major_version;
+ minor = XIVersion.minor_version;
+ }
+
if (pXIClient->major_version) {
/* Check to see if the client has only ever asked
* for version 2.2 or higher
*/
- if (version_compare(stuff->major_version, stuff->minor_version, 2, 2)
>= 0 &&
+ if (version_compare(major, minor, 2, 2) >= 0 &&
version_compare(pXIClient->major_version,
pXIClient->minor_version, 2, 2) >= 0)
{
@@ -84,16 +96,14 @@ ProcXIQueryVersion(ClientPtr client)
* version to the client but leave the server internal
* version set to the highest requested value
*/
- major = stuff->major_version;
- minor = stuff->minor_version;
- if (version_compare(stuff->major_version, stuff->minor_version,
+ if (version_compare(major, minor,
pXIClient->major_version,
pXIClient->minor_version) > 0)
{
- pXIClient->major_version = stuff->major_version;
- pXIClient->minor_version = stuff->minor_version;
+ pXIClient->major_version = major;
+ pXIClient->minor_version = minor;
}
} else {
- if (version_compare(stuff->major_version, stuff->minor_version,
+ if (version_compare(major, minor,
pXIClient->major_version,
pXIClient->minor_version) < 0) {
client->errorValue = stuff->major_version;
@@ -103,15 +113,6 @@ ProcXIQueryVersion(ClientPtr client)
minor = pXIClient->minor_version;
}
} else {
- if (version_compare(XIVersion.major_version, XIVersion.minor_version,
- stuff->major_version, stuff->minor_version) > 0) {
- major = stuff->major_version;
- minor = stuff->minor_version;
- }
- else {
- major = XIVersion.major_version;
- minor = XIVersion.minor_version;
- }
pXIClient->major_version = major;
pXIClient->minor_version = minor;
--
1.8.3.2
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel