diff options
| author | Miles Bader | 2007-12-06 00:46:18 +0000 |
|---|---|---|
| committer | Miles Bader | 2007-12-06 00:46:18 +0000 |
| commit | e5e76c04310d287a56675876dd83e1089faba215 (patch) | |
| tree | a4b4f1cc134e4fd5af42671ec6689e07afe48ff2 /src | |
| parent | b890d447fb56bfe9f2e4742eda4b3ab4b5f4b32a (diff) | |
| parent | a2afc99dbad3fa9a3170ad72c578451c3aea58a4 (diff) | |
| download | emacs-e5e76c04310d287a56675876dd83e1089faba215.tar.gz emacs-e5e76c04310d287a56675876dd83e1089faba215.zip | |
Merge from emacs--rel--22
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-943
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 43 | ||||
| -rw-r--r-- | src/image.c | 15 | ||||
| -rw-r--r-- | src/mac.c | 51 | ||||
| -rw-r--r-- | src/process.c | 1 | ||||
| -rw-r--r-- | src/sysdep.c | 9 | ||||
| -rw-r--r-- | src/unexmacosx.c | 103 | ||||
| -rw-r--r-- | src/w32proc.c | 9 | ||||
| -rw-r--r-- | src/xdisp.c | 8 |
8 files changed, 225 insertions, 14 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index d1507f7edde..f55e4ac786c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,46 @@ | |||
| 1 | 2007-12-05 Magnus Henoch <mange@freemail.hu> | ||
| 2 | |||
| 3 | * process.c (make_process): Initialize pty_flag to 0. | ||
| 4 | |||
| 5 | 2007-12-05 Jason Rumney <jasonr@gnu.org> | ||
| 6 | |||
| 7 | * image.c (xbm_load) [WINDOWSNT]: Shuffle the bits of directly | ||
| 8 | specified XBMs. | ||
| 9 | |||
| 10 | 2007-12-05 Richard Stallman <rms@gnu.org> | ||
| 11 | |||
| 12 | * xdisp.c (syms_of_xdisp) <scroll-conservatively>: Doc fix. | ||
| 13 | |||
| 14 | 2007-12-05 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | ||
| 15 | |||
| 16 | * mac.c (cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]: | ||
| 17 | New variable. | ||
| 18 | (mac_try_close_socket) [MAC_OSX]: New function. | ||
| 19 | [MAC_OSX] (sys_select) [SELECT_USE_CFSOCKET]: | ||
| 20 | Update cfsockets_for_select. Replace invalid CFRunLoop source. | ||
| 21 | |||
| 22 | * sysdep.c (emacs_close) [MAC_OSX && HAVE_CARBON]: | ||
| 23 | Use mac_try_close_socket. | ||
| 24 | |||
| 25 | 2007-12-05 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | ||
| 26 | |||
| 27 | * unexmacosx.c (unrelocate): New argument BASE. Use it instead of | ||
| 28 | reloc_base. | ||
| 29 | (copy_dysymtab): Compute relocation base here. | ||
| 30 | (rebase_reloc_address) [__ppc64__]: New function. | ||
| 31 | (copy_dysymtab) [__ppc64__]: Use it if relocation base needs to be | ||
| 32 | changed. | ||
| 33 | |||
| 34 | 2007-12-05 Jason Rumney <jasonr@gnu.org> | ||
| 35 | |||
| 36 | * w32proc.c (sys_spawnve): Quote args with wildcards. | ||
| 37 | |||
| 38 | 2007-12-05 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | ||
| 39 | |||
| 40 | * unexmacosx.c (copy_data_segment): Also copy __gcc_except_tab and | ||
| 41 | __objc_* sections. | ||
| 42 | (unrelocate) [_LP64]: Set relocation base to address of data segment. | ||
| 43 | |||
| 1 | 2007-12-05 Michael Albinus <michael.albinus@gmx.de> | 44 | 2007-12-05 Michael Albinus <michael.albinus@gmx.de> |
| 2 | 45 | ||
| 3 | * dbusbind.c (xd_read_message): Return value is a Lisp_Object. | 46 | * dbusbind.c (xd_read_message): Return value is a Lisp_Object. |
diff --git a/src/image.c b/src/image.c index 91be3f4b57e..a9b1e9835ed 100644 --- a/src/image.c +++ b/src/image.c | |||
| @@ -3128,6 +3128,8 @@ convert_mono_to_color_image (f, img, foreground, background) | |||
| 3128 | release_frame_dc (f, hdc); | 3128 | release_frame_dc (f, hdc); |
| 3129 | old_prev = SelectObject (old_img_dc, img->pixmap); | 3129 | old_prev = SelectObject (old_img_dc, img->pixmap); |
| 3130 | new_prev = SelectObject (new_img_dc, new_pixmap); | 3130 | new_prev = SelectObject (new_img_dc, new_pixmap); |
| 3131 | /* Windows convention for mono bitmaps is black = background, | ||
| 3132 | white = foreground. */ | ||
| 3131 | SetTextColor (new_img_dc, background); | 3133 | SetTextColor (new_img_dc, background); |
| 3132 | SetBkColor (new_img_dc, foreground); | 3134 | SetBkColor (new_img_dc, foreground); |
| 3133 | 3135 | ||
| @@ -3523,6 +3525,19 @@ xbm_load (f, img) | |||
| 3523 | else | 3525 | else |
| 3524 | bits = XBOOL_VECTOR (data)->data; | 3526 | bits = XBOOL_VECTOR (data)->data; |
| 3525 | 3527 | ||
| 3528 | #ifdef WINDOWSNT | ||
| 3529 | { | ||
| 3530 | char *invertedBits; | ||
| 3531 | int nbytes, i; | ||
| 3532 | /* Windows mono bitmaps are reversed compared with X. */ | ||
| 3533 | invertedBits = bits; | ||
| 3534 | nbytes = (img->width + BITS_PER_CHAR - 1) / BITS_PER_CHAR | ||
| 3535 | * img->height; | ||
| 3536 | bits = (char *) alloca(nbytes); | ||
| 3537 | for (i = 0; i < nbytes; i++) | ||
| 3538 | bits[i] = XBM_BIT_SHUFFLE (invertedBits[i]); | ||
| 3539 | } | ||
| 3540 | #endif | ||
| 3526 | /* Create the pixmap. */ | 3541 | /* Create the pixmap. */ |
| 3527 | 3542 | ||
| 3528 | Create_Pixmap_From_Bitmap_Data (f, img, bits, | 3543 | Create_Pixmap_From_Bitmap_Data (f, img, bits, |
| @@ -5004,6 +5004,10 @@ extern int noninteractive; | |||
| 5004 | #if SELECT_USE_CFSOCKET | 5004 | #if SELECT_USE_CFSOCKET |
| 5005 | #define SELECT_TIMEOUT_THRESHOLD_RUNLOOP 0.2 | 5005 | #define SELECT_TIMEOUT_THRESHOLD_RUNLOOP 0.2 |
| 5006 | 5006 | ||
| 5007 | /* Dictionary of file descriptors vs CFSocketRef's allocated in | ||
| 5008 | sys_select. */ | ||
| 5009 | static CFMutableDictionaryRef cfsockets_for_select; | ||
| 5010 | |||
| 5007 | static void | 5011 | static void |
| 5008 | socket_callback (s, type, address, data, info) | 5012 | socket_callback (s, type, address, data, info) |
| 5009 | CFSocketRef s; | 5013 | CFSocketRef s; |
| @@ -5089,6 +5093,43 @@ select_and_poll_event (nfds, rfds, wfds, efds, timeout) | |||
| 5089 | return 0; | 5093 | return 0; |
| 5090 | } | 5094 | } |
| 5091 | 5095 | ||
| 5096 | /* Clean up the CFSocket associated with the file descriptor FD in | ||
| 5097 | case the same descriptor is used in other threads later. If no | ||
| 5098 | CFSocket is associated with FD, then return 0 without closing FD. | ||
| 5099 | Otherwise, return 1 with closing FD. */ | ||
| 5100 | |||
| 5101 | int | ||
| 5102 | mac_try_close_socket (fd) | ||
| 5103 | int fd; | ||
| 5104 | { | ||
| 5105 | #if SELECT_USE_CFSOCKET | ||
| 5106 | if (cfsockets_for_select) | ||
| 5107 | { | ||
| 5108 | void *key = (void *) fd; | ||
| 5109 | CFSocketRef socket = | ||
| 5110 | (CFSocketRef) CFDictionaryGetValue (cfsockets_for_select, key); | ||
| 5111 | |||
| 5112 | if (socket) | ||
| 5113 | { | ||
| 5114 | #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020 | ||
| 5115 | CFOptionFlags flags = CFSocketGetSocketFlags (socket); | ||
| 5116 | |||
| 5117 | if (!(flags & kCFSocketCloseOnInvalidate)) | ||
| 5118 | CFSocketSetSocketFlags (socket, flags | kCFSocketCloseOnInvalidate); | ||
| 5119 | #endif | ||
| 5120 | BLOCK_INPUT; | ||
| 5121 | CFSocketInvalidate (socket); | ||
| 5122 | CFDictionaryRemoveValue (cfsockets_for_select, key); | ||
| 5123 | UNBLOCK_INPUT; | ||
| 5124 | |||
| 5125 | return 1; | ||
| 5126 | } | ||
| 5127 | } | ||
| 5128 | #endif | ||
| 5129 | |||
| 5130 | return 0; | ||
| 5131 | } | ||
| 5132 | |||
| 5092 | int | 5133 | int |
| 5093 | sys_select (nfds, rfds, wfds, efds, timeout) | 5134 | sys_select (nfds, rfds, wfds, efds, timeout) |
| 5094 | int nfds; | 5135 | int nfds; |
| @@ -5165,6 +5206,11 @@ sys_select (nfds, rfds, wfds, efds, timeout) | |||
| 5165 | CFDictionaryCreateMutable (NULL, 0, NULL, | 5206 | CFDictionaryCreateMutable (NULL, 0, NULL, |
| 5166 | &kCFTypeDictionaryValueCallBacks); | 5207 | &kCFTypeDictionaryValueCallBacks); |
| 5167 | 5208 | ||
| 5209 | if (cfsockets_for_select == NULL) | ||
| 5210 | cfsockets_for_select = | ||
| 5211 | CFDictionaryCreateMutable (NULL, 0, NULL, | ||
| 5212 | &kCFTypeDictionaryValueCallBacks); | ||
| 5213 | |||
| 5168 | for (minfd = 1; ; minfd++) /* nfds-1 works as a sentinel. */ | 5214 | for (minfd = 1; ; minfd++) /* nfds-1 works as a sentinel. */ |
| 5169 | if (FD_ISSET (minfd, rfds) || (wfds && FD_ISSET (minfd, wfds))) | 5215 | if (FD_ISSET (minfd, rfds) || (wfds && FD_ISSET (minfd, wfds))) |
| 5170 | break; | 5216 | break; |
| @@ -5176,7 +5222,7 @@ sys_select (nfds, rfds, wfds, efds, timeout) | |||
| 5176 | CFRunLoopSourceRef source = | 5222 | CFRunLoopSourceRef source = |
| 5177 | (CFRunLoopSourceRef) CFDictionaryGetValue (sources, key); | 5223 | (CFRunLoopSourceRef) CFDictionaryGetValue (sources, key); |
| 5178 | 5224 | ||
| 5179 | if (source == NULL) | 5225 | if (source == NULL || !CFRunLoopSourceIsValid (source)) |
| 5180 | { | 5226 | { |
| 5181 | CFSocketRef socket = | 5227 | CFSocketRef socket = |
| 5182 | CFSocketCreateWithNative (NULL, fd, | 5228 | CFSocketCreateWithNative (NULL, fd, |
| @@ -5186,11 +5232,12 @@ sys_select (nfds, rfds, wfds, efds, timeout) | |||
| 5186 | 5232 | ||
| 5187 | if (socket == NULL) | 5233 | if (socket == NULL) |
| 5188 | continue; | 5234 | continue; |
| 5235 | CFDictionarySetValue (cfsockets_for_select, key, socket); | ||
| 5189 | source = CFSocketCreateRunLoopSource (NULL, socket, 0); | 5236 | source = CFSocketCreateRunLoopSource (NULL, socket, 0); |
| 5190 | CFRelease (socket); | 5237 | CFRelease (socket); |
| 5191 | if (source == NULL) | 5238 | if (source == NULL) |
| 5192 | continue; | 5239 | continue; |
| 5193 | CFDictionaryAddValue (sources, key, source); | 5240 | CFDictionarySetValue (sources, key, source); |
| 5194 | CFRelease (source); | 5241 | CFRelease (source); |
| 5195 | } | 5242 | } |
| 5196 | CFRunLoopAddSource (runloop, source, kCFRunLoopDefaultMode); | 5243 | CFRunLoopAddSource (runloop, source, kCFRunLoopDefaultMode); |
diff --git a/src/process.c b/src/process.c index dc96bc27e78..0204388e672 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -631,6 +631,7 @@ make_process (name) | |||
| 631 | p->tick = 0; | 631 | p->tick = 0; |
| 632 | p->update_tick = 0; | 632 | p->update_tick = 0; |
| 633 | p->pid = 0; | 633 | p->pid = 0; |
| 634 | p->pty_flag = 0; | ||
| 634 | p->raw_status_new = 0; | 635 | p->raw_status_new = 0; |
| 635 | p->status = Qrun; | 636 | p->status = Qrun; |
| 636 | p->mark = Fmake_marker (); | 637 | p->mark = Fmake_marker (); |
diff --git a/src/sysdep.c b/src/sysdep.c index 81850919dd3..d1f378a3f87 100644 --- a/src/sysdep.c +++ b/src/sysdep.c | |||
| @@ -3486,6 +3486,15 @@ emacs_close (fd) | |||
| 3486 | int did_retry = 0; | 3486 | int did_retry = 0; |
| 3487 | register int rtnval; | 3487 | register int rtnval; |
| 3488 | 3488 | ||
| 3489 | #if defined (MAC_OSX) && defined (HAVE_CARBON) | ||
| 3490 | { | ||
| 3491 | extern int mac_try_close_socket P_ ((int)); | ||
| 3492 | |||
| 3493 | if (mac_try_close_socket (fd)) | ||
| 3494 | return 0; | ||
| 3495 | } | ||
| 3496 | #endif | ||
| 3497 | |||
| 3489 | while ((rtnval = close (fd)) == -1 | 3498 | while ((rtnval = close (fd)) == -1 |
| 3490 | && (errno == EINTR)) | 3499 | && (errno == EINTR)) |
| 3491 | did_retry = 1; | 3500 | did_retry = 1; |
diff --git a/src/unexmacosx.c b/src/unexmacosx.c index 3646aec6983..dadc19d52e3 100644 --- a/src/unexmacosx.c +++ b/src/unexmacosx.c | |||
| @@ -819,7 +819,9 @@ copy_data_segment (struct load_command *lc) | |||
| 819 | || strncmp (sectp->sectname, "__la_sym_ptr2", 16) == 0 | 819 | || strncmp (sectp->sectname, "__la_sym_ptr2", 16) == 0 |
| 820 | || strncmp (sectp->sectname, "__dyld", 16) == 0 | 820 | || strncmp (sectp->sectname, "__dyld", 16) == 0 |
| 821 | || strncmp (sectp->sectname, "__const", 16) == 0 | 821 | || strncmp (sectp->sectname, "__const", 16) == 0 |
| 822 | || strncmp (sectp->sectname, "__cfstring", 16) == 0) | 822 | || strncmp (sectp->sectname, "__cfstring", 16) == 0 |
| 823 | || strncmp (sectp->sectname, "__gcc_except_tab", 16) == 0 | ||
| 824 | || strncmp (sectp->sectname, "__objc_", 7) == 0) | ||
| 823 | { | 825 | { |
| 824 | if (!unexec_copy (sectp->offset, old_file_offset, sectp->size)) | 826 | if (!unexec_copy (sectp->offset, old_file_offset, sectp->size)) |
| 825 | unexec_error ("cannot copy section %s", sectp->sectname); | 827 | unexec_error ("cannot copy section %s", sectp->sectname); |
| @@ -898,12 +900,13 @@ copy_symtab (struct load_command *lc, long delta) | |||
| 898 | 900 | ||
| 899 | /* Fix up relocation entries. */ | 901 | /* Fix up relocation entries. */ |
| 900 | static void | 902 | static void |
| 901 | unrelocate (const char *name, off_t reloff, int nrel) | 903 | unrelocate (const char *name, off_t reloff, int nrel, vm_address_t base) |
| 902 | { | 904 | { |
| 903 | int i, unreloc_count; | 905 | int i, unreloc_count; |
| 904 | struct relocation_info reloc_info; | 906 | struct relocation_info reloc_info; |
| 905 | struct scattered_relocation_info *sc_reloc_info | 907 | struct scattered_relocation_info *sc_reloc_info |
| 906 | = (struct scattered_relocation_info *) &reloc_info; | 908 | = (struct scattered_relocation_info *) &reloc_info; |
| 909 | vm_address_t location; | ||
| 907 | 910 | ||
| 908 | for (unreloc_count = 0, i = 0; i < nrel; i++) | 911 | for (unreloc_count = 0, i = 0; i < nrel; i++) |
| 909 | { | 912 | { |
| @@ -917,14 +920,15 @@ unrelocate (const char *name, off_t reloff, int nrel) | |||
| 917 | switch (reloc_info.r_type) | 920 | switch (reloc_info.r_type) |
| 918 | { | 921 | { |
| 919 | case GENERIC_RELOC_VANILLA: | 922 | case GENERIC_RELOC_VANILLA: |
| 920 | if (reloc_info.r_address >= data_segment_scp->vmaddr | 923 | location = base + reloc_info.r_address; |
| 921 | && reloc_info.r_address < (data_segment_scp->vmaddr | 924 | if (location >= data_segment_scp->vmaddr |
| 922 | + data_segment_scp->vmsize)) | 925 | && location < (data_segment_scp->vmaddr |
| 926 | + data_segment_scp->vmsize)) | ||
| 923 | { | 927 | { |
| 924 | off_t src_off = data_segment_old_fileoff | 928 | off_t src_off = data_segment_old_fileoff |
| 925 | + reloc_info.r_address - data_segment_scp->vmaddr; | 929 | + (location - data_segment_scp->vmaddr); |
| 926 | off_t dst_off = data_segment_scp->fileoff | 930 | off_t dst_off = data_segment_scp->fileoff |
| 927 | + reloc_info.r_address - data_segment_scp->vmaddr; | 931 | + (location - data_segment_scp->vmaddr); |
| 928 | 932 | ||
| 929 | if (!unexec_copy (dst_off, src_off, 1 << reloc_info.r_length)) | 933 | if (!unexec_copy (dst_off, src_off, 1 << reloc_info.r_length)) |
| 930 | unexec_error ("unrelocate: %s:%d cannot copy original value", | 934 | unexec_error ("unrelocate: %s:%d cannot copy original value", |
| @@ -955,15 +959,73 @@ unrelocate (const char *name, off_t reloff, int nrel) | |||
| 955 | unreloc_count, nrel, name); | 959 | unreloc_count, nrel, name); |
| 956 | } | 960 | } |
| 957 | 961 | ||
| 962 | #if __ppc64__ | ||
| 963 | /* Rebase r_address in the relocation table. */ | ||
| 964 | static void | ||
| 965 | rebase_reloc_address (off_t reloff, int nrel, long linkedit_delta, long diff) | ||
| 966 | { | ||
| 967 | int i; | ||
| 968 | struct relocation_info reloc_info; | ||
| 969 | struct scattered_relocation_info *sc_reloc_info | ||
| 970 | = (struct scattered_relocation_info *) &reloc_info; | ||
| 971 | |||
| 972 | for (i = 0; i < nrel; i++, reloff += sizeof (reloc_info)) | ||
| 973 | { | ||
| 974 | if (lseek (infd, reloff - linkedit_delta, L_SET) | ||
| 975 | != reloff - linkedit_delta) | ||
| 976 | unexec_error ("rebase_reloc_table: cannot seek to reloc_info"); | ||
| 977 | if (!unexec_read (&reloc_info, sizeof (reloc_info))) | ||
| 978 | unexec_error ("rebase_reloc_table: cannot read reloc_info"); | ||
| 979 | |||
| 980 | if (sc_reloc_info->r_scattered == 0 | ||
| 981 | && reloc_info.r_type == GENERIC_RELOC_VANILLA) | ||
| 982 | { | ||
| 983 | reloc_info.r_address -= diff; | ||
| 984 | if (!unexec_write (reloff, &reloc_info, sizeof (reloc_info))) | ||
| 985 | unexec_error ("rebase_reloc_table: cannot write reloc_info"); | ||
| 986 | } | ||
| 987 | } | ||
| 988 | } | ||
| 989 | #endif | ||
| 990 | |||
| 958 | /* Copy a LC_DYSYMTAB load command from the input file to the output | 991 | /* Copy a LC_DYSYMTAB load command from the input file to the output |
| 959 | file, adjusting the file offset fields. */ | 992 | file, adjusting the file offset fields. */ |
| 960 | static void | 993 | static void |
| 961 | copy_dysymtab (struct load_command *lc, long delta) | 994 | copy_dysymtab (struct load_command *lc, long delta) |
| 962 | { | 995 | { |
| 963 | struct dysymtab_command *dstp = (struct dysymtab_command *) lc; | 996 | struct dysymtab_command *dstp = (struct dysymtab_command *) lc; |
| 997 | vm_address_t base; | ||
| 964 | 998 | ||
| 965 | unrelocate ("local", dstp->locreloff, dstp->nlocrel); | 999 | #ifdef _LP64 |
| 966 | unrelocate ("external", dstp->extreloff, dstp->nextrel); | 1000 | #if __ppc64__ |
| 1001 | { | ||
| 1002 | int i; | ||
| 1003 | |||
| 1004 | base = 0; | ||
| 1005 | for (i = 0; i < nlc; i++) | ||
| 1006 | if (lca[i]->cmd == LC_SEGMENT) | ||
| 1007 | { | ||
| 1008 | struct segment_command *scp = (struct segment_command *) lca[i]; | ||
| 1009 | |||
| 1010 | if (scp->vmaddr + scp->vmsize > 0x100000000 | ||
| 1011 | && (scp->initprot & VM_PROT_WRITE) != 0) | ||
| 1012 | { | ||
| 1013 | base = data_segment_scp->vmaddr; | ||
| 1014 | break; | ||
| 1015 | } | ||
| 1016 | } | ||
| 1017 | } | ||
| 1018 | #else | ||
| 1019 | /* First writable segment address. */ | ||
| 1020 | base = data_segment_scp->vmaddr; | ||
| 1021 | #endif | ||
| 1022 | #else | ||
| 1023 | /* First segment address in the file (unless MH_SPLIT_SEGS set). */ | ||
| 1024 | base = 0; | ||
| 1025 | #endif | ||
| 1026 | |||
| 1027 | unrelocate ("local", dstp->locreloff, dstp->nlocrel, base); | ||
| 1028 | unrelocate ("external", dstp->extreloff, dstp->nextrel, base); | ||
| 967 | 1029 | ||
| 968 | if (dstp->nextrel > 0) { | 1030 | if (dstp->nextrel > 0) { |
| 969 | dstp->extreloff += delta; | 1031 | dstp->extreloff += delta; |
| @@ -982,6 +1044,29 @@ copy_dysymtab (struct load_command *lc, long delta) | |||
| 982 | unexec_error ("cannot write symtab command to header"); | 1044 | unexec_error ("cannot write symtab command to header"); |
| 983 | 1045 | ||
| 984 | curr_header_offset += lc->cmdsize; | 1046 | curr_header_offset += lc->cmdsize; |
| 1047 | |||
| 1048 | #if __ppc64__ | ||
| 1049 | /* Check if the relocation base needs to be changed. */ | ||
| 1050 | if (base == 0) | ||
| 1051 | { | ||
| 1052 | vm_address_t newbase = 0; | ||
| 1053 | int i; | ||
| 1054 | |||
| 1055 | for (i = 0; i < num_unexec_regions; i++) | ||
| 1056 | if (unexec_regions[i].range.address + unexec_regions[i].range.size | ||
| 1057 | > 0x100000000) | ||
| 1058 | { | ||
| 1059 | newbase = data_segment_scp->vmaddr; | ||
| 1060 | break; | ||
| 1061 | } | ||
| 1062 | |||
| 1063 | if (newbase) | ||
| 1064 | { | ||
| 1065 | rebase_reloc_address (dstp->locreloff, dstp->nlocrel, delta, newbase); | ||
| 1066 | rebase_reloc_address (dstp->extreloff, dstp->nextrel, delta, newbase); | ||
| 1067 | } | ||
| 1068 | } | ||
| 1069 | #endif | ||
| 985 | } | 1070 | } |
| 986 | 1071 | ||
| 987 | /* Copy a LC_TWOLEVEL_HINTS load command from the input file to the output | 1072 | /* Copy a LC_TWOLEVEL_HINTS load command from the input file to the output |
diff --git a/src/w32proc.c b/src/w32proc.c index c21d589c525..a14a8ee384c 100644 --- a/src/w32proc.c +++ b/src/w32proc.c | |||
| @@ -781,7 +781,14 @@ sys_spawnve (int mode, char *cmdname, char **argv, char **envp) | |||
| 781 | variable in their environment. */ | 781 | variable in their environment. */ |
| 782 | char ppid_env_var_buffer[64]; | 782 | char ppid_env_var_buffer[64]; |
| 783 | char *extra_env[] = {ppid_env_var_buffer, NULL}; | 783 | char *extra_env[] = {ppid_env_var_buffer, NULL}; |
| 784 | char *sepchars = " \t"; | 784 | /* These are the characters that cause an argument to need quoting. |
| 785 | Arguments with whitespace characters need quoting to prevent the | ||
| 786 | argument being split into two or more. Arguments with wildcards | ||
| 787 | are also quoted, for consistency with posix platforms, where wildcards | ||
| 788 | are not expanded if we run the program directly without a shell. | ||
| 789 | Some extra whitespace characters need quoting in Cygwin programs, | ||
| 790 | so this list is conditionally modified below. */ | ||
| 791 | char *sepchars = " \t*?"; | ||
| 785 | 792 | ||
| 786 | /* We don't care about the other modes */ | 793 | /* We don't care about the other modes */ |
| 787 | if (mode != _P_NOWAIT) | 794 | if (mode != _P_NOWAIT) |
diff --git a/src/xdisp.c b/src/xdisp.c index eb0fda1fa91..22f51859eff 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -24160,8 +24160,12 @@ If you want scrolling to always be a line at a time, you should set | |||
| 24160 | 24160 | ||
| 24161 | DEFVAR_INT ("scroll-conservatively", &scroll_conservatively, | 24161 | DEFVAR_INT ("scroll-conservatively", &scroll_conservatively, |
| 24162 | doc: /* *Scroll up to this many lines, to bring point back on screen. | 24162 | doc: /* *Scroll up to this many lines, to bring point back on screen. |
| 24163 | A value of zero means to scroll the text to center point vertically | 24163 | If point moves off-screen, redisplay will scroll by up to |
| 24164 | in the window. */); | 24164 | `scroll-conservatively' lines in order to bring point just barely |
| 24165 | onto the screen again. If that cannot be done, then redisplay | ||
| 24166 | recenters point as usual. | ||
| 24167 | |||
| 24168 | A value of zero means always recenter point if it moves off screen. */); | ||
| 24165 | scroll_conservatively = 0; | 24169 | scroll_conservatively = 0; |
| 24166 | 24170 | ||
| 24167 | DEFVAR_INT ("scroll-margin", &scroll_margin, | 24171 | DEFVAR_INT ("scroll-margin", &scroll_margin, |