Rev 1300 | Rev 1314 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1300 | Rev 1311 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | ;; Copyright (C) KolibriOS team 2004-2009. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2004-2009. All rights reserved. ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; ;; |
5 | ;; ;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 7... | Line 7... | ||
7 | 7 | ||
Line 8... | Line 8... | ||
8 | $Revision: 1300 $ |
8 | $Revision: 1311 $ |
9 | 9 | ||
Line 637... | Line 637... | ||
637 | ; access denied? this may be a result of copy-on-write protection for DLL |
637 | ; access denied? this may be a result of copy-on-write protection for DLL |
638 | ; check list of HDLLs |
638 | ; check list of HDLLs |
639 | and ebx, not 0xFFF |
639 | and ebx, not 0xFFF |
640 | mov eax, [CURRENT_TASK] |
640 | mov eax, [CURRENT_TASK] |
641 | shl eax, 8 |
641 | shl eax, 8 |
642 | lea eax, [SLOT_BASE+eax+APP_OBJ_OFFSET] |
642 | mov eax, [SLOT_BASE+eax+APPDATA.dlls_list_ptr] |
- | 643 | test eax, eax |
|
- | 644 | jz .fail |
|
643 | mov esi, [eax+APPOBJ.fd] |
645 | mov esi, [eax+HDLL.fd] |
644 | .scan_hdll: |
646 | .scan_hdll: |
645 | cmp esi, eax |
647 | cmp esi, eax |
646 | jz .fail |
648 | jz .fail |
647 | cmp [esi+APPOBJ.magic], 'HDLL' |
- | |
648 | jnz .scan_hdll.next |
- | |
649 | mov edx, ebx |
649 | mov edx, ebx |
650 | sub edx, [esi+HDLL.base] |
650 | sub edx, [esi+HDLL.base] |
651 | cmp edx, [esi+HDLL.size] |
651 | cmp edx, [esi+HDLL.size] |
652 | jb .fault_in_hdll |
652 | jb .fault_in_hdll |
653 | .scan_hdll.next: |
653 | .scan_hdll.next: |
654 | mov esi, [esi+APPOBJ.fd] |
654 | mov esi, [esi+HDLL.fd] |
655 | jmp .scan_hdll |
655 | jmp .scan_hdll |
656 | .fault_in_hdll: |
656 | .fault_in_hdll: |
657 | ; allocate new page, map it as rw and copy data |
657 | ; allocate new page, map it as rw and copy data |
658 | call alloc_page |
658 | call alloc_page |
659 | test eax, eax |
659 | test eax, eax |