summaryrefslogtreecommitdiff
path: root/src/glsl/pp/sl_pp_version.c
diff options
context:
space:
mode:
authorMichal Krol <michal@vmware.com>2009-06-17 13:49:06 +0200
committerMichal Krol <michal@vmware.com>2009-09-07 10:11:43 +0200
commitf24322fbf6599b31f07ebc548e390c77b803d67c (patch)
treea550e9dd12bcceb9acc76bc677b645e4f1b21f17 /src/glsl/pp/sl_pp_version.c
parentf24ec185c531d2b2209df01901c90eca57ca711f (diff)
glsl: Introduce sl_pp_context and maintain a reuseable pool of strings.
Diffstat (limited to 'src/glsl/pp/sl_pp_version.c')
-rw-r--r--src/glsl/pp/sl_pp_version.c35
1 files changed, 25 insertions, 10 deletions
diff --git a/src/glsl/pp/sl_pp_version.c b/src/glsl/pp/sl_pp_version.c
index e743a09841..89c3cfa1a5 100644
--- a/src/glsl/pp/sl_pp_version.c
+++ b/src/glsl/pp/sl_pp_version.c
@@ -54,7 +54,8 @@ _parse_integer(const char *input,
int
-sl_pp_version(const struct sl_pp_token_info *input,
+sl_pp_version(struct sl_pp_context *context,
+ const struct sl_pp_token_info *input,
unsigned int *version,
unsigned int *tokens_eaten)
{
@@ -99,11 +100,18 @@ sl_pp_version(const struct sl_pp_token_info *input,
break;
case SL_PP_IDENTIFIER:
- if (strcmp(input[i].data.identifier, "version")) {
- return 0;
+ {
+ const char *id = sl_pp_context_cstr(context, input[i].data.identifier);
+
+ if (!id) {
+ return -1;
+ }
+ if (strcmp(id, "version")) {
+ return 0;
+ }
+ i++;
+ found_version = 1;
}
- i++;
- found_version = 1;
break;
default:
@@ -119,12 +127,19 @@ sl_pp_version(const struct sl_pp_token_info *input,
break;
case SL_PP_NUMBER:
- if (_parse_integer(input[i].data.number, version)) {
- /* Expected version number. */
- return -1;
+ {
+ const char *num = sl_pp_context_cstr(context, input[i].data.number);
+
+ if (!num) {
+ return -1;
+ }
+ if (_parse_integer(num, version)) {
+ /* Expected version number. */
+ return -1;
+ }
+ i++;
+ found_number = 1;
}
- i++;
- found_number = 1;
break;
default: