You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficserver.apache.org by "Leif Hedstrom (JIRA)" <ji...@apache.org> on 2014/07/25 23:32:38 UTC

[jira] [Commented] (TS-2959) Compiler warnings from gcc 4.9.1

    [ https://issues.apache.org/jira/browse/TS-2959?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14074961#comment-14074961 ] 

Leif Hedstrom commented on TS-2959:
-----------------------------------

Adding an assert, like e.g.

{code}
--- a/iocore/hostdb/P_MultiCache.h
+++ b/iocore/hostdb/P_MultiCache.h
@@ -464,6 +464,8 @@ template<class C> inline int MultiCache<C>::level_of_block(C * b)

 template<class C> inline C * MultiCache<C>::cache_bucket(uint64_t folded_md5, int level)
 {
+  ink_release_assert(level < MULTI_CACHE_MAX_LEVELS);
+
   int bucket = (int) (folded_md5 % buckets);
   char *offset = data + level_offset[level] + bucketsize[level] * bucket;
   return (C *) offset;
{code}

helps. I also noticed this anomaly, which is merely ugly:

{code}
--- a/iocore/hostdb/MultiCache.cc
+++ b/iocore/hostdb/MultiCache.cc
@@ -110,7 +110,7 @@ MultiCacheBase::initialize(Store *astore, char *afilename,
   int64_t size = 0;

   Debug("multicache", "initializing %s with %d elements, %d buckets and %d levels", afilename, aelements, abuckets, alevels);
-  ink_assert(alevels < 4);
+  ink_release_assert(alevels <= MULTI_CACHE_MAX_LEVELS);
   levels = alevels;
   elementsize = get_elementsize();
   totalelements = 0;
{code}


> Compiler warnings from gcc 4.9.1
> --------------------------------
>
>                 Key: TS-2959
>                 URL: https://issues.apache.org/jira/browse/TS-2959
>             Project: Traffic Server
>          Issue Type: Bug
>          Components: Core, DNS
>            Reporter: Leif Hedstrom
>             Fix For: 5.1.0
>
>
> We get:
> {code}
> In file included from ../../iocore/hostdb/P_HostDB.h:47:0,
>                  from ../../proxy/Main.cc:63:
> ../../iocore/hostdb/P_MultiCache.h: In member function ‘void MultiCache<C>::rebuild_element(int, char*, RebuildMC&) [with C = HostDBInfo]’:
> ../../iocore/hostdb/P_MultiCache.h:468:23: error: array subscript is above array bounds [-Werror=array-bounds]
>    char *offset = data + level_offset[level] + bucketsize[level] * bucket;
>                        ^
> ../../iocore/hostdb/P_MultiCache.h:468:65: error: array subscript is above array bounds [-Werror=array-bounds]
>    char *offset = data + level_offset[level] + bucketsize[level] * bucket;
>                                                                  ^
> ../../iocore/hostdb/P_MultiCache.h:487:29: error: array subscript is above array bounds [-Werror=array-bounds]
>    for (block = b; block < b + elements[level]; block++) {
>                              ^
> ../../iocore/hostdb/P_MultiCache.h:509:39: error: array subscript is above array bounds [-Werror=array-bounds]
>        if (hits > ((max_hits / 2) + 1) * elements[level])
>                                        ^
> ../../iocore/hostdb/P_MultiCache.h:511:33: error: array subscript is above array bounds [-Werror=array-bounds]
>        for (block = b; block < b + elements[level]; block++) {
>                                  ^
> ../../iocore/hostdb/P_MultiCache.h:468:23: error: array subscript is above array bounds [-Werror=array-bounds]
>    char *offset = data + level_offset[level] + bucketsize[level] * bucket;
>                        ^
> ../../iocore/hostdb/P_MultiCache.h:468:65: error: array subscript is above array bounds [-Werror=array-bounds]
>    char *offset = data + level_offset[level] + bucketsize[level] * bucket;
>                                                                  ^
> ../../iocore/hostdb/P_MultiCache.h:487:29: error: array subscript is above array bounds [-Werror=array-bounds]
>    for (block = b; block < b + elements[level]; block++) {
>                              ^
> ../../iocore/hostdb/P_MultiCache.h:509:39: error: array subscript is above array bounds [-Werror=array-bounds]
>        if (hits > ((max_hits / 2) + 1) * elements[level])
>                                        ^
> ../../iocore/hostdb/P_MultiCache.h:511:33: error: array subscript is above array bounds [-Werror=array-bounds]
>        for (block = b; block < b + elements[level]; block++) {
>                                  ^
> ../../iocore/hostdb/P_MultiCache.h:552:31: error: array subscript is above array bounds [-Werror=array-bounds]
>      for (block = b; block < b + elements[level]; block++) {
>                                ^
> ../../iocore/hostdb/P_MultiCache.h:558:31: error: array subscript is above array bounds [-Werror=array-bounds]
>      for (block = b; block < b + elements[level]; block++)
>                                ^
> ../../iocore/hostdb/P_MultiCache.h:552:31: error: array subscript is above array bounds [-Werror=array-bounds]
>      for (block = b; block < b + elements[level]; block++) {
>                                ^
> ../../iocore/hostdb/P_MultiCache.h:558:31: error: array subscript is above array bounds [-Werror=array-bounds]
>      for (block = b; block < b + elements[level]; block++)
>                                ^
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)