Re: [PATCH 5/5] cairo-script: Rename struct member to avoid name collision on AIX
Bill Spitzak <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <CAL-8oAiJHQ8O=hz_kwVQ3gsWBc2652h__2Ji9YQNQsNOOZW5_A@mail.gmail.com> |
It might be a good idea for the new variable name to contain the text "jmp" so that a grep for "jmp" will find it as well as uses of setjmp and longjmp. I would call it "jmp_buffer" (although "jmp_buf" and "jmpbuffer" would also avoid the AIX problem). On Wed, Jun 17, 2015 at 2:05 AM, Bryce Harrington <[email protected]> wrote: > On AIX, the token jmpbuf is a pre-processor macro. > cairo-script-scanner.c includes a private struct with a member named > jmpbuf which gets renamed to __jmpbuf when AIX's sys/context.h has been > included. > > While judicious ordering of includes might kludge around this problem > (by causing all references to .jmpbuf to become .__jmpbuf), it's better > to simply select a new name for the struct member that won't suffer the > collision. > > Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=89339 > > Signed-off-by: Bryce Harrington <[email protected]> > --- > util/cairo-script/cairo-script-private.h | 2 +- > util/cairo-script/cairo-script-scanner.c | 74 > ++++++++++++++++---------------- > 2 files changed, 38 insertions(+), 38 deletions(-) > > diff --git a/util/cairo-script/cairo-script-private.h > b/util/cairo-script/cairo-script-private.h > index 6bf41b4..8d158d6 100644 > --- a/util/cairo-script/cairo-script-private.h > +++ b/util/cairo-script/cairo-script-private.h > @@ -435,7 +435,7 @@ union _csi_union_object { > }; > > struct _csi_scanner { > - jmp_buf jmpbuf; > + jmp_buf jump_buffer; > int depth; > > int bind; > diff --git a/util/cairo-script/cairo-script-scanner.c > b/util/cairo-script/cairo-script-scanner.c > index 980c608..3dfb3a9 100644 > --- a/util/cairo-script/cairo-script-scanner.c > +++ b/util/cairo-script/cairo-script-scanner.c > @@ -199,13 +199,13 @@ _buffer_grow (csi_t *ctx, csi_scanner_t *scan) > char *base; > > if (_csi_unlikely (scan->buffer.size > INT_MAX / 2)) > - longjmp (scan->jmpbuf, _csi_error (CSI_STATUS_NO_MEMORY)); > + longjmp (scan->jump_buffer, _csi_error (CSI_STATUS_NO_MEMORY)); > > offset = scan->buffer.ptr - scan->buffer.base; > newsize = scan->buffer.size * 2; > base = _csi_realloc (ctx, scan->buffer.base, newsize); > if (_csi_unlikely (base == NULL)) > - longjmp (scan->jmpbuf, _csi_error (CSI_STATUS_NO_MEMORY)); > + longjmp (scan->jump_buffer, _csi_error (CSI_STATUS_NO_MEMORY)); > > scan->buffer.base = base; > scan->buffer.ptr = base + offset; > @@ -441,12 +441,12 @@ token_end (csi_t *ctx, csi_scanner_t *scan, > csi_file_t *src) > &scan->procedure_stack, > &scan->build_procedure); > if (_csi_unlikely (status)) > - longjmp (scan->jmpbuf, status); > + longjmp (scan->jump_buffer, status); > } > > status = csi_array_new (ctx, 0, &scan->build_procedure); > if (_csi_unlikely (status)) > - longjmp (scan->jmpbuf, status); > + longjmp (scan->jump_buffer, status); > > scan->build_procedure.type |= CSI_OBJECT_ATTR_EXECUTABLE; > return; > @@ -454,7 +454,7 @@ token_end (csi_t *ctx, csi_scanner_t *scan, csi_file_t > *src) > if (_csi_unlikely > (scan->build_procedure.type == CSI_OBJECT_TYPE_NULL)) > { > - longjmp (scan->jmpbuf, _csi_error > (CSI_STATUS_INVALID_SCRIPT)); > + longjmp (scan->jump_buffer, _csi_error > (CSI_STATUS_INVALID_SCRIPT)); > } > > if (scan->procedure_stack.len) { > @@ -470,7 +470,7 @@ token_end (csi_t *ctx, csi_scanner_t *scan, csi_file_t > *src) > scan->build_procedure.type = CSI_OBJECT_TYPE_NULL; > } > if (_csi_unlikely (status)) > - longjmp (scan->jmpbuf, status); > + longjmp (scan->jump_buffer, status); > > return; > } > @@ -480,19 +480,19 @@ token_end (csi_t *ctx, csi_scanner_t *scan, > csi_file_t *src) > if (len >= 2 && s[1] == '/') { /* substituted name */ > status = csi_name_new (ctx, &obj, s + 2, len - 2); > if (_csi_unlikely (status)) > - longjmp (scan->jmpbuf, status); > + longjmp (scan->jump_buffer, status); > > status = _csi_name_lookup (ctx, obj.datum.name, &obj); > } else { /* literal name */ > status = csi_name_new (ctx, &obj, s + 1, len - 1); > } > if (_csi_unlikely (status)) > - longjmp (scan->jmpbuf, status); > + longjmp (scan->jump_buffer, status); > } else { > if (! _csi_parse_number (&obj, s, len)) { > status = csi_name_new (ctx, &obj, s, len); > if (_csi_unlikely (status)) > - longjmp (scan->jmpbuf, status); > + longjmp (scan->jump_buffer, status); > > obj.type |= CSI_OBJECT_ATTR_EXECUTABLE; > } > @@ -510,7 +510,7 @@ token_end (csi_t *ctx, csi_scanner_t *scan, csi_file_t > *src) > status = scan_push (ctx, &obj); > } > if (_csi_unlikely (status)) > - longjmp (scan->jmpbuf, status); > + longjmp (scan->jump_buffer, status); > } > > static void > @@ -531,7 +531,7 @@ string_end (csi_t *ctx, csi_scanner_t *scan) > scan->buffer.base, > scan->buffer.ptr - scan->buffer.base); > if (_csi_unlikely (status)) > - longjmp (scan->jmpbuf, status); > + longjmp (scan->jump_buffer, status); > > if (scan->build_procedure.type != CSI_OBJECT_TYPE_NULL) > status = csi_array_append (ctx, > @@ -540,7 +540,7 @@ string_end (csi_t *ctx, csi_scanner_t *scan) > else > status = scan_push (ctx, &obj); > if (_csi_unlikely (status)) > - longjmp (scan->jmpbuf, status); > + longjmp (scan->jump_buffer, status); > } > > static int > @@ -588,7 +588,7 @@ hex_end (csi_t *ctx, csi_scanner_t *scan) > scan->buffer.base, > scan->buffer.ptr - scan->buffer.base); > if (_csi_unlikely (status)) > - longjmp (scan->jmpbuf, status); > + longjmp (scan->jump_buffer, status); > > if (scan->build_procedure.type != CSI_OBJECT_TYPE_NULL) > status = csi_array_append (ctx, > @@ -597,7 +597,7 @@ hex_end (csi_t *ctx, csi_scanner_t *scan) > else > status = scan_push (ctx, &obj); > if (_csi_unlikely (status)) > - longjmp (scan->jmpbuf, status); > + longjmp (scan->jump_buffer, status); > } > > static void > @@ -605,7 +605,7 @@ base85_add (csi_t *ctx, csi_scanner_t *scan, int c) > { > if (c == 'z') { > if (_csi_unlikely (scan->accumulator_count != 0)) > - longjmp (scan->jmpbuf, _csi_error (CSI_STATUS_INVALID_SCRIPT)); > + longjmp (scan->jump_buffer, _csi_error > (CSI_STATUS_INVALID_SCRIPT)); > > buffer_check (ctx, scan, 4); > buffer_add (&scan->buffer, 0); > @@ -613,7 +613,7 @@ base85_add (csi_t *ctx, csi_scanner_t *scan, int c) > buffer_add (&scan->buffer, 0); > buffer_add (&scan->buffer, 0); > } else if (_csi_unlikely (c < '!' || c > 'u')) { > - longjmp (scan->jmpbuf, _csi_error (CSI_STATUS_INVALID_SCRIPT)); > + longjmp (scan->jump_buffer, _csi_error > (CSI_STATUS_INVALID_SCRIPT)); > } else { > scan->accumulator = scan->accumulator*85 + c - '!'; > if (++scan->accumulator_count == 5) { > @@ -641,7 +641,7 @@ base85_end (csi_t *ctx, csi_scanner_t *scan, > cairo_bool_t deflate) > case 0: > break; > case 1: > - longjmp (scan->jmpbuf, _csi_error (CSI_STATUS_INVALID_SCRIPT)); > + longjmp (scan->jump_buffer, _csi_error > (CSI_STATUS_INVALID_SCRIPT)); > break; > > case 2: > @@ -670,14 +670,14 @@ base85_end (csi_t *ctx, csi_scanner_t *scan, > cairo_bool_t deflate) > (Bytef *) scan->buffer.ptr - > source, > len); > if (_csi_unlikely (status)) > - longjmp (scan->jmpbuf, status); > + longjmp (scan->jump_buffer, status); > } else { > status = csi_string_new (ctx, > &obj, > scan->buffer.base, > scan->buffer.ptr - scan->buffer.base); > if (_csi_unlikely (status)) > - longjmp (scan->jmpbuf, status); > + longjmp (scan->jump_buffer, status); > } > > if (scan->build_procedure.type != CSI_OBJECT_TYPE_NULL) > @@ -687,7 +687,7 @@ base85_end (csi_t *ctx, csi_scanner_t *scan, > cairo_bool_t deflate) > else > status = scan_push (ctx, &obj); > if (_csi_unlikely (status)) > - longjmp (scan->jmpbuf, status); > + longjmp (scan->jump_buffer, status); > } > > static void > @@ -764,7 +764,7 @@ base64_end (csi_t *ctx, csi_scanner_t *scan) > scan->buffer.base, > scan->buffer.ptr - scan->buffer.base); > if (_csi_unlikely (status)) > - longjmp (scan->jmpbuf, status); > + longjmp (scan->jump_buffer, status); > > if (scan->build_procedure.type != CSI_OBJECT_TYPE_NULL) > status = csi_array_append (ctx, > @@ -773,7 +773,7 @@ base64_end (csi_t *ctx, csi_scanner_t *scan) > else > status = scan_push (ctx, &obj); > if (_csi_unlikely (status)) > - longjmp (scan->jmpbuf, status); > + longjmp (scan->jump_buffer, status); > } > > static void > @@ -783,7 +783,7 @@ scan_read (csi_scanner_t *scan, csi_file_t *src, void > *ptr, int len) > do { > int ret = csi_file_read (src, data, len); > if (_csi_unlikely (ret == 0)) > - longjmp (scan->jmpbuf, _csi_error (CSI_STATUS_READ_ERROR)); > + longjmp (scan->jump_buffer, _csi_error > (CSI_STATUS_READ_ERROR)); > data += ret; > len -= ret; > } while (_csi_unlikely (len)); > @@ -801,7 +801,7 @@ string_read (csi_t *ctx, > > status = csi_string_new (ctx, obj, NULL, len); > if (_csi_unlikely (status)) > - longjmp (scan->jmpbuf, status); > + longjmp (scan->jump_buffer, status); > > if (compressed) { > uint32_t u32; > @@ -1015,7 +1015,7 @@ scan_none: > case 157: > case 158: > case 159: > - longjmp (scan->jmpbuf, _csi_error (CSI_STATUS_INVALID_SCRIPT)); > + longjmp (scan->jump_buffer, _csi_error > (CSI_STATUS_INVALID_SCRIPT)); > > case '#': /* PDF 1.2 escape code */ > { > @@ -1044,7 +1044,7 @@ scan_none: > status = scan_push (ctx, &obj); > } > if (_csi_unlikely (status)) > - longjmp (scan->jmpbuf, status); > + longjmp (scan->jump_buffer, status); > } > } > return; > @@ -1135,7 +1135,7 @@ scan_string: > next = csi_file_getc (src); > switch (next) { > case EOF: > - longjmp (scan->jmpbuf, _csi_error > (CSI_STATUS_INVALID_SCRIPT)); > + longjmp (scan->jump_buffer, _csi_error > (CSI_STATUS_INVALID_SCRIPT)); > > case 'n': > string_add (ctx, scan, '\n'); > @@ -1229,7 +1229,7 @@ scan_string: > break; > } > } > - longjmp (scan->jmpbuf, _csi_error (CSI_STATUS_INVALID_SCRIPT)); > + longjmp (scan->jump_buffer, _csi_error (CSI_STATUS_INVALID_SCRIPT)); > > scan_hex: > buffer_reset (&scan->buffer); > @@ -1276,10 +1276,10 @@ scan_hex: > break; > > default: > - longjmp (scan->jmpbuf, _csi_error (CSI_STATUS_INVALID_SCRIPT)); > + longjmp (scan->jump_buffer, _csi_error > (CSI_STATUS_INVALID_SCRIPT)); > } > } > - longjmp (scan->jmpbuf, _csi_error (CSI_STATUS_INVALID_SCRIPT)); > + longjmp (scan->jump_buffer, _csi_error (CSI_STATUS_INVALID_SCRIPT)); > > scan_base85: > buffer_reset (&scan->buffer); > @@ -1306,7 +1306,7 @@ scan_base85: > break; > } > } > - longjmp (scan->jmpbuf, _csi_error (CSI_STATUS_INVALID_SCRIPT)); > + longjmp (scan->jump_buffer, _csi_error (CSI_STATUS_INVALID_SCRIPT)); > > scan_base64: > buffer_reset (&scan->buffer); > @@ -1324,14 +1324,14 @@ scan_base64: > base64_end (ctx, scan); > goto scan_none; > } > - longjmp (scan->jmpbuf, _csi_error (CSI_STATUS_INVALID_SCRIPT)); > + longjmp (scan->jump_buffer, _csi_error > (CSI_STATUS_INVALID_SCRIPT)); > > default: > base64_add (ctx, scan, c); > break; > } > } > - longjmp (scan->jmpbuf, _csi_error (CSI_STATUS_INVALID_SCRIPT)); > + longjmp (scan->jump_buffer, _csi_error (CSI_STATUS_INVALID_SCRIPT)); > } > > static csi_status_t > @@ -1396,7 +1396,7 @@ _csi_scan_file (csi_t *ctx, csi_file_t *src) > */ > > if (ctx->scanner.depth++ == 0) { > - if ((status = setjmp (ctx->scanner.jmpbuf))) { > + if ((status = setjmp (ctx->scanner.jump_buffer))) { > ctx->scanner.depth = 0; > return status; > } > @@ -1759,7 +1759,7 @@ _translate_push (csi_t *ctx, csi_object_t *obj) > case CSI_OBJECT_TYPE_PATTERN: > case CSI_OBJECT_TYPE_SCALED_FONT: > case CSI_OBJECT_TYPE_SURFACE: > - longjmp (ctx->scanner.jmpbuf, _csi_error > (CSI_STATUS_INVALID_SCRIPT)); > + longjmp (ctx->scanner.jump_buffer, _csi_error > (CSI_STATUS_INVALID_SCRIPT)); > break; > } > > @@ -1805,7 +1805,7 @@ _translate_execute (csi_t *ctx, csi_object_t *obj) > case CSI_OBJECT_TYPE_PATTERN: > case CSI_OBJECT_TYPE_SCALED_FONT: > case CSI_OBJECT_TYPE_SURFACE: > - longjmp (ctx->scanner.jmpbuf, _csi_error > (CSI_STATUS_INVALID_SCRIPT)); > + longjmp (ctx->scanner.jump_buffer, _csi_error > (CSI_STATUS_INVALID_SCRIPT)); > break; > } > > @@ -1877,7 +1877,7 @@ _csi_translate_file (csi_t *ctx, > csi_status_t status; > struct _translate_closure translator; > > - if ((status = setjmp (ctx->scanner.jmpbuf))) > + if ((status = setjmp (ctx->scanner.jump_buffer))) > return status; > > status = build_opcodes (ctx, &translator.opcodes); > -- > 1.9.1 > > -- > cairo mailing list > [email protected] > http://lists.cairographics.org/mailman/listinfo/cairo -- cairo mailing list [email protected] http://lists.cairographics.org/mailman/listinfo/cairo