From: Justin Viiret Date: Mon, 9 May 2016 06:03:39 +0000 (+1000) Subject: ucp_table: don't always deref rv of lower_bound X-Git-Tag: v4.2.0^2~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f48b8c937b275622b1fb1ecaaa5260459a8a4195;p=thirdparty%2Fvectorscan.git ucp_table: don't always deref rv of lower_bound Fixes a warning from asan. --- diff --git a/src/parser/ucp_table.cpp b/src/parser/ucp_table.cpp index 7b53d1d6..a6cb57cd 100644 --- a/src/parser/ucp_table.cpp +++ b/src/parser/ucp_table.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Intel Corporation + * Copyright (c) 2015-2016, Intel Corporation * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -117,13 +117,12 @@ void make_caseless(CodePointSet *cps) { bool flip_case(unichar *c) { assert(c); - const unicase *const uc_begin = ucp_caseless_def; - const unicase *const uc_end = - ucp_caseless_def + ARRAY_LENGTH(ucp_caseless_def); - const unicase test = { *c, 0 }; - const unicase *f = lower_bound(uc_begin, uc_end, test); - if (f->base == *c) { + + const auto uc_begin = begin(ucp_caseless_def); + const auto uc_end = end(ucp_caseless_def); + const auto f = lower_bound(uc_begin, uc_end, test); + if (f != uc_end && f->base == *c) { DEBUG_PRINTF("flipped c=%x to %x\n", *c, f->caseless); *c = f->caseless; return true;