PB编译器出现低概率的编译错误

Powerbuilder

在研究反编译的过程中(PB反编译大师从这里下载),发现PB 12.1 6875编译的一个文件,本意要实现如下代码

参数:encoding e

string s
long len
choose case e

  case encodingansi!
        s = "xxxx"

  case encodingutf8! 

        s = "xxxx"

  case else

        s = "not support"

end choose
return s

在第三个case分支是,操作码应该是

get_var(s) //第三个case(case else)

get_string(“not support”) //第三个case

convert_string(“not support”) //第三个case

Assign_string(s = “not support”) //第三个case

get_var(s) //返回语句

convert_string(s) //返回语句

return_var(s) //返回语句

但是实际反编译发现,编译出的pbd中的代码有丢失和错乱,具体为:

get_string(“not support”) //第三个case

get_var(s) //返回语句

convert_string(s) //返回语句

return_var(s) //返回语句

其错误在于丢失第三个分支,而且仅仅剩下get_string(“not support”) 一个操作码

这个导致运行时错误或者崩溃. 这个文件样本来自国外一个很出名的PB编写的软件。

过去的分析,也发现其他的版本中存在这样的低概率的莫名的错误。