xumingyong 发表于 2013-1-15 02:57:56

erlang:split_binary(Bin, N)的BUG

OS运行平台:
 
root@x61-laptop:~# cat /etc/lsb-releaseDISTRIB_ID=UbuntuDISTRIB_RELEASE=8.10DISTRIB_CODENAME=intrepidDISTRIB_DESCRIPTION="Ubuntu 8.10" 
 
ERLANG版本:
 
root@x61-laptop:~# cat /usr/lib/erlang/releases/RELEASES[{release,"OTPAPN 181 01","R12B","5.6.3",          [{kernel,"2.12.3","/usr/lib/erlang/lib/kernel-2.12.3"},         {stdlib,"1.15.3","/usr/lib/erlang/lib/stdlib-1.15.3"},         {sasl,"2.1.5.3","/usr/lib/erlang/lib/sasl-2.1.5.3"}],          permanent}]. 
 
操作过程:


Eshell V5.6.3(abort with ^G)1> CaptureFile = <<212,195,178,161,2,0,4,0,0,0,0,0,0,0,0,0,96>>.<<212,195,178,161,2,0,4,0,0,0,0,0,0,0,0,0,96>>2> A = split_binary(CaptureFile, 1).{<<"\324">>,<<195,178,161,2,0,4,0,0,0,0,0,0,0,0,0,96>>}3> B = split_binary(CaptureFile, 3).{<<"\324\303\262">>,<<161,2,0,4,0,0,0,0,0,0,0,0,0,96>>}4> C = split_binary(CaptureFile, 4). {<<"\324\303\262\241">>,<<2,0,4,0,0,0,0,0,0,0,0,0,96>>}5> D = split_binary(CaptureFile, 5).{<<212,195,178,161,2>>,<<0,4,0,0,0,0,0,0,0,0,0,96>>}6> E = split_binary(CaptureFile, 6).{<<212,195,178,161,2,0>>,<<4,0,0,0,0,0,0,0,0,0,96>>}7>  
 
这说明split_binary(Bin, N)函数的N如果小于5,则会出错误。
如果Bin超过128M也会出错。
 
 
还有<<"\324\303\262\241">>是怎么产生的?
 
 
页: [1]
查看完整版本: erlang:split_binary(Bin, N)的BUG