status still Open with 3 other changes
by
gustafn3
2024-04-26 09:51:04.
D 2024-04-26T09:51:04.908
J icomment As\si\sread\sthis,\sthe\sintention\sis\sto\sissue\san\serror,\swhen\ssomeone\spasses\sin\sa\svalue\slarger\sthan\s"int"\sas\sresult\spointer\sin\r\n\r\n\s\s\sTcl_GetBooleanFromObj(interp,\sobjv[0],\sboolPtr);\r\n\r\nsince\sthere\sis\slater\sa\scast\s\r\n\r\n\s\s\sTcl_GetBooleanFromObj(interp,\sobjPtr,\s(int\s*)(boolPtr))\r\n\r\nFor\sthe\scode\r\n\r\n\s\s\s{\r\n\s\s\s\s\s\s\ssize_t\slarge\s=\s0;\r\n\s\s\s\s\s\s\sresult\s=\sTcl_GetBooleanFromObj(interp,\sobjPtr,\s&large);\r\n\s\s\s}\r\n\r\nthe\serror\smessage\sin\sthis\scase\swill\sbe\r\n\r\n\s\s\serror:\s'_bool_Var'\sdeclared\sas\san\sarray\swith\sa\snegative\ssize\r\n\r\nas\salso\sthe\scomment\sdocuments.\r\n\r\nThis\sis\snot\sgreat\sfor\sthe\sfollowing\sreasons:\r\n1)\sstrange\serror\smessage\r\n2)\sgenerated\sonly\son\sGNU\scompatible\scompilers\r\n3)\shandles\sjust\sa\sparticular\scase\s(object\sfor\sthe\sresult\sis\stoo\slarge,\swhy\snot\scovering\stoo\ssmall?)\r\n4)\sraises\sa\swarning\salso\sin\scases,\swhere\severything\sis\sfine\r\n\s\s\s(when\sthe\sparanoia\sflags\sare\sturned\son,\sprobably\smany\sdevelopers\swill\sdo\sthis,\swhen\smoving\sto\stcl9)\r\n\r\nWhy\snot\susing\r\n\r\n\s\s\sstatic_assert(\sconstant-expression,\sstring-literal\s)\r\n\r\nwhen\savailable.\sIt\sis\spart\sof\r\n-\sC11\r\n-\sMS:\sVS\s2015\r\n-\sGCC\ssince\sgcc-4.6\r\n\r\nWith\ssome\smental\scontortion,\sone\scan\salso\ssneak\sit\sinto\sexpressions,\s\r\nas\sthe\sfollowing\ssnippet\sshows.\r\n\r\n\s\s\s{\r\n\s\s\s\s\s\s\ssize_t\slarge\s=\s0;\r\n\s\s\s\s\s\s\sresult\s=\sTcl_GetBooleanFromObj(interp,\sobjPtr,\s&large)\r\n\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s+\s(int)(sizeof(struct\s{static_assert(sizeof(large)\s<=\ssizeof(int),"all\sis\slost");int\sdummy;})*0)\s;\r\n\s\s\s}\r\n\r\nThis\swould\saddress\s(1)\sand\s(4)\sand\simproves\sthe\ssituation\son\s(2)\sas\swell.
J login gustafn3
J mimetype text/plain
K 1e48483c8b3b2702b981ebcc85474512bb3d6e0d
U gustafn3
Z bbdf5f78c56c8a0879f8868570406636