summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorIgor Babaev <igor@askmonty.org>2010-12-27 14:22:05 -0800
committerIgor Babaev <igor@askmonty.org>2010-12-27 14:22:05 -0800
commit0dc5ef87d4c5ad21b5ff5ad26187117514d4fbb7 (patch)
tree10e4fe145fb1c7300075f1e1f02932a15a32ee38 /include
parent1eb5e0e60388f460ab2c4d216a98f4088d9997b9 (diff)
parent7d68e1ead7be84fd6476854c8b4ff02ef16ea7d4 (diff)
downloadmariadb-git-0dc5ef87d4c5ad21b5ff5ad26187117514d4fbb7.tar.gz
Merge
Diffstat (limited to 'include')
-rw-r--r--include/my_sys.h2
-rw-r--r--include/my_tree.h10
2 files changed, 11 insertions, 1 deletions
diff --git a/include/my_sys.h b/include/my_sys.h
index 309cb9c59b9..f5e38c5858e 100644
--- a/include/my_sys.h
+++ b/include/my_sys.h
@@ -197,7 +197,7 @@ extern void my_large_free(uchar * ptr, myf my_flags);
#define my_large_free(A,B) my_free_lock((A),(B))
#endif /* HAVE_LARGE_PAGES */
-#ifdef HAVE_ALLOCA
+#if defined(HAVE_ALLOCA) && !defined(HAVE_valgrind)
#if defined(_AIX) && !defined(__GNUC__) && !defined(_AIX43)
#pragma alloca
#endif /* _AIX */
diff --git a/include/my_tree.h b/include/my_tree.h
index ceeb849ad0c..3aeef20e0ad 100644
--- a/include/my_tree.h
+++ b/include/my_tree.h
@@ -30,7 +30,17 @@ extern "C" {
#define tree_set_pointer(element,ptr) *((uchar **) (element+1))=((uchar*) (ptr))
+/*
+ A tree with its flag set to TREE_ONLY_DUPS behaves differently on inserting
+ an element that is not in the tree:
+ the element is not added at all, but instead tree_insert() returns a special
+ address TREE_ELEMENT_UNIQUE as an indication that the function has not failed
+ due to lack of memory.
+*/
+
+#define TREE_ELEMENT_UNIQUE ((TREE_ELEMENT *) 1)
#define TREE_NO_DUPS 1
+#define TREE_ONLY_DUPS 2
typedef enum { left_root_right, right_root_left } TREE_WALK;
typedef uint32 element_count;