Runtime Crash When Using the String List Parameter

Hello:
I am trying to program an effect plugin where there is a choice between three or more different types of effects. I decided to use the StringListParameter() for the choice component as it supports any number of choices using the appendString() function. However, whenever I change the choice during runtime, it causes the plugin and DAW to crash.
For code reference, I refer to NoteExpressionSynth’s use of the StringListParameter() and its implementation, namely, the filter type choice component.
The only variance from that code is that I do not utilize the GlobalParameterState and instead just define ParamValues in the Processor class, following the tutorial on the online documentation tutorial.
Any help would be appreciated,
Thanks
Sine On Synth

can you provide more info (source code)?

Source Code:

// Controller.cpp
initialize()
{
          Parameter* param;
          param = new StringListParameter(USTRING("Test List"), kParamTestList);
          param->appendString(USTRING("param1");
          param->appendString(USTRING("param2");
          param->appendString(USTRING("param3");
          parameters.addParameter(param);
}

next, I normalize it

// Controller.cpp
setComponentState()
{
      int8 savedParamStringList;
      IBStreamer streamer(state, kLittleEndian);
      if (streamer.readInt8(savedParamStringList) == false)
              return kResultFalse;
      setParamNormalized(kParamTestList, plainParamToNormalized(kParamTestList, savedParamStringList);
}

After declaring the int8 parameter in pluginprocessor.h, I then move to the process() method:

// processor.cpp
process()
{
         // ...
         switch(paramQueue)
               {
                     case kParamTestList:
                                if paramQueue->getPoint(numPoints - 1, sampleOffset, value) == kResultTrue)
                                    testParam = std::min<int8>((int8)(3 * value), 2);
                                    break;

         // processing stuff...
         for (...)
           {
               Sample32* ptrIn = (Vst::Sample32*)in[i];
               Sample32* ptrOut = (Vst::Sample32*)out[i];
               Sample32 tmp;
               while(...)
                  {
                      tmp = (*ptrIn++) * 1;
                      if (testParam = 0) tmp = * 2;
                      if (testParam = 1) tmp =  * 3.;
                      if (testParam = 2) tmp =  * 4.;
                     (*ptrOut++) = tmp;
                  }
           }
}
               

After this I do the setState() and getState() functions:

// processor.cpp
setState()
{
   int8 savedParamStringList = 0;
   if (streamer.readInt8(savedParamStringList) == false);
      return kResultFalse;
   testParam = savedParamStringList;
}
getState()
{
   int8 toSaveparamStringList = testParam;
   streamer.writeInt8(toSaveparamStringList);
}

I rewrote a VST with this implementation code. It didn’t send an exception, but I didn’t hear any difference in the audio when changing from one choice to another.
This is the complete dilemma: either it will give me an exception or there won’t be processing done.

I do not see any problem here… did you try to build the example of the SDK using StringListParameter? and check if it crashes with the host you are using?
Try to simplify your plugin in order to see where there is an issue…