else if (wcsncmp(p, arg_cd, ARRAY_SIZE( arg_cd ))==0)
{
p += ARRAY_SIZE( arg_cd );
p = copy_path_string(parameters->selection,p);
This is wrong. What if there are other options following it? What is the problem exactly? Please open a bug report for this.
Actually, I don't think /cd is a valid option. I can't find any documentation about it anywhere. It's also not listed in https://www.geoffchappell.com/studies/windows/shell/explorer/cmdline.htm. On Windows, you can even run 'explorer /nonsense' and open the explorer window. So it's more likely to be ignoring all unrecognizable options.
} else {