----------------------------------------------------------------------------------- [BUG/PRB.] VFP 9.0 FIX - THE DEFAULT VALUE FOR THE SET SYSFORMATS COMMAND January 2024 ----------------------------------------------------------------------------------- CCB 1. BUG: In vfp9 (and vfp6, vfp7, vfp8), sometimes the default value is ON for the SET SYSFORMATS command, now the default value is always OFF for the SET SYSFORMATS command. The bug only occurs for a private data session in DBCS (Double-Byte Character Sets) environments. 2. CAUSE: For the system data session (DataSessionID=0), the default value is OFF for the SET SYSFORMATS command. For the default data session (DataSessionID=1), the default value is OFF for the SET SYSFORMATS command. In vfp9 (and vfp6, vfp7, vfp8), for a private data session (DataSessionID>=2), the default value is OFF for the SET SYSFORMATS command in non-DBCS (Double-Byte Character Sets), but the default value is ON for the SET SYSFORMATS command in DBCS (Double-Byte Character Sets). In VFP Advanced, for a private data session (DataSessionID>=2), the default value is always OFF for the SET SYSFORMATS command. There are some BUGs in the following code. 3. RESOLUTION: We can write some code to fix the BUG. Label414dbe :: mov ecx , dword ptr [ Data9370f4 ] ;0x00414dbe : 8b0df4709300 mov eax , dword ptr [ Data935778 ] ;0x00414dc4 : a178579300 shr ecx , 0Ch ;0x00414dc9 : c1e90c shr eax , 03h ;0x00414dcc : c1e803 and cl , 01h ;0x00414dcf : 80e101 pushd 05Ah ;0x00414dd2 : 6a5a add eax , 05h ;0x00414dd4 : 83c005 mov dword ptr [ esi + 0ECh ] , ebx ;0x00414dd7 : 899eec000000 mov dword ptr [ esi + 0F0h ] , ebx ;0x00414ddd : 899ef0000000 mov dword ptr [ esi + 0F4h ] , 032h ;0x00414de3 : c786f400000032000000 mov dword ptr [ esi + 0FCh ] , ebx ;0x00414ded : 899efc000000 mov dword ptr [ esi + 0100h ] , ebx ;0x00414df3 : 899e00010000 mov dword ptr [ esi + 0F8h ] , edi ;0x00414df9 : 89bef8000000 mov byte ptr [ esi + 0104h ] , 02Eh ;0x00414dff : c686040100002e mov dword ptr [ esi + 0108h ] , ebx ;0x00414e06 : 899e08010000 mov byte ptr [ esi + 0114h ] , 02Ch ;0x00414e0c : c686140100002c mov dword ptr [ esi + 011Ch ] , ebx ;0x00414e13 : 899e1c010000 mov byte ptr [ esi + 0148h ] , 024h ;0x00414e19 : c6864801000024 mov byte ptr [ esi + 0149h ] , bl ;0x00414e20 : 889e49010000 ; ; ------------------------------------------------------------------------ ; VFP 9.0 FIX - THE DEFAULT VALUE FOR THE SET SYSFORMATS COMMAND ; May 2021 ; ------------------------------------------------------------------------ ; CCB ; ; In vfp9, sometimes the default value is ON for the SET SYSFORMATS command, ; now the default value is always OFF for the SET SYSFORMATS command. ; ; 2021/5/26, by ccb ; ; mov byte ptr [ esi + 0120h ] , cl ;0x00414e26 : 888e20010000 mov byte ptr [ esi + 0120h ] , 00h ;0x00414e26 : 888e20010000 mov dword ptr [ esi + 0158h ] , ebx ;0x00414e2c : 899e58010000 mov dword ptr [ esi + 015Ch ] , ebx ;0x00414e32 : 899e5c010000 mov dword ptr [ esi + 0160h ] , ebx ;0x00414e38 : 899e60010000 mov byte ptr [ esi + 0152h ] , bl ;0x00414e3e : 889e52010000 call Fun42bf2a ;0x00414e44 : e8e1700100 cmp eax , ebx ;0x00414e49 : 3bc3 mov dword ptr [ ebp - 16 ] , eax ;0x00414e4b : 8945f0 je Label61a3f1 ;0x00414e4e : 0f849d552000 mov eax , dword ptr [eax] ;0x00414e54 : 8b00 mov ecx , dword ptr [ eax - 4 ] ;0x00414e56 : 8b48fc sub ecx , 0Ch ;0x00414e59 : 83e90c mov dword ptr [ ebp + 8 ] , ecx ;0x00414e5c : 894d08 mov edx , ecx ;0x00414e5f : 8bd1 mov dword ptr [ ebp - 12 ] , eax ;0x00414e61 : 8945f4 lea edi , dword ptr [ eax + 4 ] ;0x00414e64 : 8d7804 shr ecx , 02h ;0x00414e67 : c1e902 xor eax , eax ;0x00414e6a : 33c0 mov dword ptr [ ebp - 4 ] , edi ;0x00414e6c : 897dfc rep stosd ;0x00414e6f : f3ab mov ecx , edx ;0x00414e71 : 8bca and ecx , 03h ;0x00414e73 : 83e103 rep stosb ;0x00414e76 : f3aa mov ecx , dword ptr [ ebp - 12 ] ;0x00414e78 : 8b4df4 mov eax , edx ;0x00414e7b : 8bc2 lea eax , dword ptr [ 8 * eax + 0FFFFFFFFh ] ;0x00414e7d : 8d04c5ffffffff mov dword ptr [ecx] , eax ;0x00414e84 : 8901 mov ecx , dword ptr [ ebp - 4 ] ;0x00414e86 : 8b4dfc mov edx , eax ;0x00414e89 : 8bd0 sar edx , 03h ;0x00414e8b : c1fa03 and eax , 07h ;0x00414e8e : 83e007 add ecx , edx ;0x00414e91 : 03ca mov dl , byte ptr [ eax + offset Data91fbd8 ] ;0x00414e93 : 8a90d8fb9100 or byte ptr [ecx] , dl ;0x00414e99 : 0811 mov eax , dword ptr [ ebp - 16 ] ;0x00414e9b : 8b45f0 4. APPLIES TO: VFP 6.0.8167.0 VFP 6.0.8961.0 (SP5) VFP 7.0.0.9262 VFP 7.0.0.9465 (SP1) VFP 8.0.0.2521 VFP 8.0.0.3117 (SP1) VFP 9.0.0.2412 VFP 9.0.0.3504 (SP1) VFP 9.0.0.4611 (SP2) VFP 9.0.0.5015 (SP2) VFP 9.0.0.5411 (SP2) VFP 9.0.0.5721 (SP2) VFP 9.0.0.5815 (SP2) VFP 9.0.0.6303 (SP2) VFP 9.0.0.6602 (SP2) VFP 9.0.0.7423 (SP2) The bug has been fixed in VFP Advanced. 5. REFERENCE WEBSITES: 1, baiyujia.com: http://www.baiyujia.com http://www.baiyujia.com/vfpdocuments/f_vfp9fix11.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix174.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix176.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix234.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix280.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix281.asp 2, sunyear.com.tw: http://vfp.sunyear.com.tw/viewtopic.php?t=7063 6. OTHER: For reference only, there is no guarantees. Any questions or suggestions, please send me an email at ccb2000@163.com. |