You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@stdcxx.apache.org by "Travis Vitek (JIRA)" <ji...@apache.org> on 2008/06/07 04:10:46 UTC
[jira] Resolved: (STDCXX-955) infinite loop or out of bound access
when slicing valarray
[ https://issues.apache.org/jira/browse/STDCXX-955?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Travis Vitek resolved STDCXX-955.
---------------------------------
Resolution: Fixed
Verified on 4.2.x.
> infinite loop or out of bound access when slicing valarray
> ----------------------------------------------------------
>
> Key: STDCXX-955
> URL: https://issues.apache.org/jira/browse/STDCXX-955
> Project: C++ Standard Library
> Issue Type: Bug
> Components: 26. Numerics
> Affects Versions: 4.2.1
> Reporter: Travis Vitek
> Assignee: Travis Vitek
> Fix For: 4.2.2
>
> Attachments: stdcxx-955.patch
>
> Original Estimate: 4h
> Time Spent: 7h
> Remaining Estimate: 0h
>
> The current valarray code does not handle creating a gslice that has a one or more empty steps. The following testcase will hang in an infinite loop.
> {noformat}
> #include <cstdlib>
> #include <valarray>
> int main ()
> {
> const std::size_t p_leng [] = { 0 };
> const std::size_t p_strd [] = { 0 };
> const std::valarray<std::size_t> va_leng (p_leng,
> sizeof (p_leng) / sizeof (*p_leng));
> const std::valarray<std::size_t> va_strd (p_strd,
> sizeof (p_strd) / sizeof (*p_strd));
> const std::gslice gs_slice (1, va_leng, va_strd);
> std::valarray<char> va_lhs (10, '!');
> va_lhs [gs_slice] = '?';
> return 0;
> }
> {noformat}
> Changing the declarations of {{p_len}} and {{p_strd}} to the following will result in an assertion or an out of bound access depending on build type.
> {noformat}
> const std::size_t p_leng [] = { 2, 0 };
> const std::size_t p_strd [] = { 1, 3 };
> {noformat}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.