summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzherczeg <zherczeg@2f5784b3-3f2a-0410-8824-cb99058d5e15>2013-05-01 19:42:31 +0000
committerzherczeg <zherczeg@2f5784b3-3f2a-0410-8824-cb99058d5e15>2013-05-01 19:42:31 +0000
commit3664d442e9e4d00efd8e0b8efcf78df9dd42a619 (patch)
treef476cf8fe8ec6e0758fcefcaa70717b375f01fa6
parent86168ea23eff24f52afc7be8998212611e214bac (diff)
downloadpcre-3664d442e9e4d00efd8e0b8efcf78df9dd42a619.tar.gz
Try madvise first before posix_madvise.
git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1322 2f5784b3-3f2a-0410-8824-cb99058d5e15
-rw-r--r--ChangeLog2
-rw-r--r--sljit/sljitUtils.c8
2 files changed, 6 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 1877529..f1034d1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -145,6 +145,8 @@ Version 8.33 28-April-2013
of the compiled pattern block, expand the flags field from 16 to 32 bits
because it was almost full.
+39. Try madvise first before posix_madvise.
+
Version 8.32 30-November-2012
-----------------------------
diff --git a/sljit/sljitUtils.c b/sljit/sljitUtils.c
index 1f023fa..b29b403 100644
--- a/sljit/sljitUtils.c
+++ b/sljit/sljitUtils.c
@@ -315,12 +315,12 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_sw SLJIT_CALL sljit_stack_resize(struct sljit_sta
aligned_new_limit = (new_limit + sljit_page_align) & ~sljit_page_align;
aligned_old_limit = (stack->limit + sljit_page_align) & ~sljit_page_align;
/* If madvise is available, we release the unnecessary space. */
-#if defined(POSIX_MADV_DONTNEED)
- if (aligned_new_limit < aligned_old_limit)
- posix_madvise((void*)aligned_new_limit, aligned_old_limit - aligned_new_limit, POSIX_MADV_DONTNEED);
-#elif defined(MADV_DONTNEED)
+#if defined(MADV_DONTNEED)
if (aligned_new_limit < aligned_old_limit)
madvise((void*)aligned_new_limit, aligned_old_limit - aligned_new_limit, MADV_DONTNEED);
+#elif defined(POSIX_MADV_DONTNEED)
+ if (aligned_new_limit < aligned_old_limit)
+ posix_madvise((void*)aligned_new_limit, aligned_old_limit - aligned_new_limit, POSIX_MADV_DONTNEED);
#endif
stack->limit = new_limit;
return 0;