[PATCH wayland 4/6] scanner: Also fail when an implicitly versioned message is out of order

Jonas Ådahl jadahl at gmail.com
Thu May 8 14:39:47 PDT 2014


Fail if a message with version implicitly set to 1 (i.e. not specified)
comes after a message with since-version > 1.

Signed-off-by: Jonas Ådahl <jadahl at gmail.com>
---
 src/scanner.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/scanner.c b/src/scanner.c
index dd1c7b6..28fadb0 100644
--- a/src/scanner.c
+++ b/src/scanner.c
@@ -404,12 +404,14 @@ start_element(void *data, const char *element_name, const char **atts)
 			if (errno == EINVAL || end == since || *end != '\0')
 				fail(&ctx->loc,
 				     "invalid integer (%s)\n", since);
-			if (version < ctx->interface->since)
-				fail(&ctx->loc, "since version not increasing\n");
-			ctx->interface->since = version;
+		} else {
+			version = 1;
 		}
 
-		message->since = ctx->interface->since;
+		if (version < ctx->interface->since)
+			fail(&ctx->loc, "since version not increasing\n");
+		ctx->interface->since = version;
+		message->since = version;
 
 		if (strcmp(name, "destroy") == 0 && !message->destructor)
 			fail(&ctx->loc, "destroy request should be destructor type");
-- 
1.9.1



More information about the wayland-devel mailing list