P3Speller crashes with exception in Param::BoundsCheck()
Posted: 13 Dec 2012, 03:16
I have recently made a fresh install of BCI2000 revision 4331, compiling it with Visual C++ 2010 Express on Windows 7 (Home Premium 64 bit). Note that I built against the version of Qt included with BCI2000. In particular, I built and then ran Operator, Signal Generator, P3SignalProcessing, and P3Speller --- I did not modify any of the source code. P3Speller crashes immediately with the following message:
2012-12-13T15:39:30 - Column index 1 out of range when accessing parameter
Function: Param::BoundsCheck()
File: ..\..\..\src\shared\types\Param.cpp
Line: 235
Terminating Application module.
Stepping through the source code in debug mode, I can trace the source of the problem to the nested loop on lines 181--184 in Localization.cpp. In particular, during the second pass through the outer loop (i.e., i == 1), the function Param::Value() is called from MutableParamRef::operator=() with parameters row == 0 and col == 1, resulting in an exception being thrown in Param::BoundsCheck() at line 235 in Param.cpp. Part of the call stack just before the exception is thrown is shown below:
Param::BoundsCheck(unsigned int row, unsigned int col) Line 235
Param::Value(unsigned int row, unsigned int col) Line 226
MutableParamRef::operator=(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & s) Line 491
Localization::AddLocalizations_(const char ** inLanguages, int inNumLanguages, const char ** inStrings, int inNumStrings) Line 184
...
Does anyone know of a solution to this issue?
With thanks in advance,
James
2012-12-13T15:39:30 - Column index 1 out of range when accessing parameter
Function: Param::BoundsCheck()
File: ..\..\..\src\shared\types\Param.cpp
Line: 235
Terminating Application module.
Stepping through the source code in debug mode, I can trace the source of the problem to the nested loop on lines 181--184 in Localization.cpp. In particular, during the second pass through the outer loop (i.e., i == 1), the function Param::Value() is called from MutableParamRef::operator=() with parameters row == 0 and col == 1, resulting in an exception being thrown in Param::BoundsCheck() at line 235 in Param.cpp. Part of the call stack just before the exception is thrown is shown below:
Param::BoundsCheck(unsigned int row, unsigned int col) Line 235
Param::Value(unsigned int row, unsigned int col) Line 226
MutableParamRef::operator=(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & s) Line 491
Localization::AddLocalizations_(const char ** inLanguages, int inNumLanguages, const char ** inStrings, int inNumStrings) Line 184
...
Does anyone know of a solution to this issue?
With thanks in advance,
James