packages: Firebird/Firebird-gcc.patch (NEW)=?UTF-8?Q?=20?=- fix build
charles
charles at pld-linux.org
Tue Jun 26 20:35:19 CEST 2012
Author: charles Date: Tue Jun 26 18:35:19 2012 GMT
Module: packages Tag: HEAD
---- Log message:
- fix build
---- Files affected:
packages/Firebird:
Firebird-gcc.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: packages/Firebird/Firebird-gcc.patch
diff -u /dev/null packages/Firebird/Firebird-gcc.patch:1.1
--- /dev/null Tue Jun 26 20:35:19 2012
+++ packages/Firebird/Firebird-gcc.patch Tue Jun 26 20:35:14 2012
@@ -0,0 +1,412 @@
+--- src/common/classes/array.h.orig 2012-06-20 09:58:37.000000000 +0200
++++ src/common/classes/array.h 2012-06-26 10:37:49.000000000 +0200
+@@ -347,7 +347,7 @@
+ size_t add(const Value& item) {
+ size_t pos;
+ find(KeyOfValue::generate(this, item), pos);
+- insert(pos, item);
++ this->insert(pos, item);
+ return pos;
+ }
+ };
+--- src/common/classes/stack.h.orig 2012-06-20 09:58:37.000000000 +0200
++++ src/common/classes/stack.h 2012-06-26 10:41:54.000000000 +0200
+@@ -48,7 +48,7 @@
+ Entry(Object e, Entry* stk)
+ : inherited(), next(stk)
+ {
+- add(e);
++ this->add(e);
+ }
+
+ Entry(Entry* stk) : inherited(), next(stk) { }
+@@ -62,7 +62,7 @@
+ {
+ if (inherited::getCount() < this->getCapacity())
+ {
+- add(e);
++ this->add(e);
+ return this;
+ }
+ Entry* newEntry = FB_NEW(p) Entry(e, this);
+--- src/common/classes/vector.h.orig 2012-06-20 09:58:37.000000000 +0200
++++ src/common/classes/vector.h 2012-06-26 10:37:49.000000000 +0200
+@@ -135,7 +135,7 @@
+ size_t add(const Value& item) {
+ size_t pos;
+ find(KeyOfValue::generate(this, item), pos);
+- insert(pos, item);
++ this->insert(pos, item);
+ return pos;
+ }
+ };
+--- src/jrd/Collation.cpp.orig 2012-06-20 09:58:27.000000000 +0200
++++ src/jrd/Collation.cpp 2012-06-26 11:35:42.000000000 +0200
+@@ -191,154 +191,53 @@
+
+
+ template <class SLEUTHTYPE>
+-bool SLEUTHNAME(Jrd::thread_db* tdbb_dummy, Jrd::TextType* obj, USHORT flags,
+- const SLEUTHTYPE* search, SLONG search_len,
+- const SLEUTHTYPE* match, SLONG match_len)
+-{
+-/**************************************
+- *
+- * E V L _ ? ? _ s l e u t h _ c h e c k
+- *
+- **************************************
+- *
+- * Functional description
+- * Evaluate the "sleuth" search operator.
+- *
+- * Turn the (pointer, byte length) input parameters into
+- * (pointer, end_pointer) for use in SLEUTH_AUX
+- *
+- **************************************/
+- fb_assert((match_len % sizeof(SLEUTHTYPE)) == 0);
+- fb_assert((search_len % sizeof(SLEUTHTYPE)) == 0);
+- fb_assert(obj->getCanonicalWidth() == sizeof(SLEUTHTYPE));
+-
+- const SLEUTHTYPE* const end_match = match + (match_len / sizeof(SLEUTHTYPE));
+- const SLEUTHTYPE* const end_search = search + (search_len / sizeof(SLEUTHTYPE));
+-
+- return SLEUTH_AUX(obj, flags, search, end_search, match, end_match);
+-}
+-
+-
+-template <class SLEUTHTYPE>
+-ULONG SLEUTH_MERGE_NAME(Jrd::thread_db* tdbb_dummy, Jrd::TextType* obj,
+- const SLEUTHTYPE* match, SLONG match_bytes,
+- const SLEUTHTYPE* control, SLONG control_bytes,
+- SLEUTHTYPE* combined, SLONG combined_bytes)
++static bool SLEUTH_CLASS_NAME(
++ Jrd::TextType* obj,
++ USHORT flags,
++ const SLEUTHTYPE* char_class,
++ const SLEUTHTYPE* const end_class,
++ SLEUTHTYPE character)
+ {
+ /**************************************
+ *
+- * E V L _ ? ? _ s l e u t h _ m e r g e
++ * s l e u t h _ c l a s s
+ *
+ **************************************
+ *
+ * Functional description
+- * Merge the matching pattern and control strings to give a cannonical
+- * matching pattern. Return the length of the combined string.
+- *
+- * What this routine does is to take the language template, strip off
+- * the prefix and put it in the output string, then parse the definitions
+- * into an array of character pointers. The index array is the defined
+- * character. The routine then takes the actual match pattern and uses
+- * the characters in it to index into the definitions to produce an equivalent
+- * pattern in the cannonical language.
+- *
+- * The silly loop setting *v++ to zero initializes the array up to the
+- * highest character defined (also max_op). Believe it or not, that part
+- * is not a bug.
++ * See if a character is a member of a class.
++ * Japanese version operates on short-based buffer,
++ * instead of SCHAR-based.
+ *
+ **************************************/
+- fb_assert(match != NULL);
+- fb_assert(control != NULL);
+- fb_assert(combined != NULL);
+-
+- fb_assert((match_bytes % sizeof(SLEUTHTYPE)) == 0);
+- fb_assert((control_bytes % sizeof(SLEUTHTYPE)) == 0);
++ fb_assert(char_class != NULL);
++ fb_assert(end_class != NULL);
++ fb_assert(char_class <= end_class);
+ fb_assert(obj->getCanonicalWidth() == sizeof(SLEUTHTYPE));
+
+- const SLEUTHTYPE* const end_match = match + (match_bytes / sizeof(SLEUTHTYPE));
+- const SLEUTHTYPE* const end_control = control + (control_bytes / sizeof(SLEUTHTYPE));
+-
+- SLEUTHTYPE max_op = 0;
+- SLEUTHTYPE* comb = combined;
+- SLEUTHTYPE* vector[256];
+- SLEUTHTYPE** v = vector;
+- SLEUTHTYPE temp[256];
+- SLEUTHTYPE* t = temp;
+-
+-/* Parse control string into substitution strings and initializing string */
++ bool result = true;
+
+- while (control < end_control) {
+- SLEUTHTYPE c = *control++;
+- if (*control == *(SLEUTHTYPE*)obj->getGdmlSubstituteCanonic()) {
+- /* Note: don't allow substitution characters larger than vector */
+- SLEUTHTYPE** const end_vector =
+- vector + (((int)c < FB_NELEM(vector)) ? c : 0);
+- while (v <= end_vector)
+- *v++ = 0;
+- *end_vector = t;
+- ++control;
+- while (control < end_control) {
+- c = *control++;
+- if ((t > temp && t[-1] == *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic())
+- || ((c != *(SLEUTHTYPE*)obj->getGdmlCommaCanonic()) && (c != *(SLEUTHTYPE*)obj->getGdmlRParenCanonic())))
+- {
+- *t++ = c;
+- }
+- else
+- break;
+- }
+- *t++ = 0;
+- }
+- else if (c == *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic() && control < end_control)
+- *comb++ = *control++;
+- else if (c == *(SLEUTHTYPE*)obj->getGdmlRParenCanonic())
+- break;
+- else if (c != *(SLEUTHTYPE*)obj->getGdmlLParenCanonic())
+- *comb++ = c;
++ if (*char_class == *(SLEUTHTYPE*)obj->getGdmlNotCanonic()) {
++ ++char_class;
++ result = false;
+ }
+
+- max_op = v - vector;
+-
+-/* Interpret matching string, substituting where appropriate */
+-
+- while (match < end_match) {
+- const SLEUTHTYPE c = *match++;
+-
+- /* if we've got a defined character, slurp the definition */
+-
+- SLEUTHTYPE* p;
+- if (c <= max_op && (p = vector[c])) {
+- while (*p)
+- *comb++ = *p++;
+-
+- /* if we've got the definition of a quote character,
+- slurp the next character too */
+-
+- if (comb > combined && comb[-1] == *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic() && *match)
+- *comb++ = *match++;
++ while (char_class < end_class) {
++ const SLEUTHTYPE c = *char_class++;
++ if (c == *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic()) {
++ if (*char_class++ == character)
++ return true;
+ }
+-
+- /* at this point we've got a non-match, but as it might be one of ours,
+- quote it. */
+-
+- else {
+- if ((((size_t) c) < FB_NELEM(special)) && special[c] &&
+- comb > combined && comb[-1] != *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic())
+- {
+- *comb++ = *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic();
+- }
+- *comb++ = c;
++ else if (*char_class == *(SLEUTHTYPE*)obj->getGdmlRangeCanonic()) {
++ char_class += 2;
++ if (character >= c && character <= char_class[-1])
++ return result;
+ }
++ else if (character == c)
++ return result;
+ }
+
+-/* Put in trailing stuff */
+-
+- while (control < end_control)
+- *comb++ = *control++;
+-
+- /* YYY - need to add code watching for overflow of combined */
+-
+- return (comb - combined) * sizeof(SLEUTHTYPE);
++ return !result;
+ }
+
+
+@@ -473,53 +372,154 @@
+
+
+ template <class SLEUTHTYPE>
+-static bool SLEUTH_CLASS_NAME(
+- Jrd::TextType* obj,
+- USHORT flags,
+- const SLEUTHTYPE* char_class,
+- const SLEUTHTYPE* const end_class,
+- SLEUTHTYPE character)
++bool SLEUTHNAME(Jrd::thread_db* tdbb_dummy, Jrd::TextType* obj, USHORT flags,
++ const SLEUTHTYPE* search, SLONG search_len,
++ const SLEUTHTYPE* match, SLONG match_len)
+ {
+ /**************************************
+ *
+- * s l e u t h _ c l a s s
++ * E V L _ ? ? _ s l e u t h _ c h e c k
+ *
+ **************************************
+ *
+ * Functional description
+- * See if a character is a member of a class.
+- * Japanese version operates on short-based buffer,
+- * instead of SCHAR-based.
++ * Evaluate the "sleuth" search operator.
++ *
++ * Turn the (pointer, byte length) input parameters into
++ * (pointer, end_pointer) for use in SLEUTH_AUX
+ *
+ **************************************/
+- fb_assert(char_class != NULL);
+- fb_assert(end_class != NULL);
+- fb_assert(char_class <= end_class);
++ fb_assert((match_len % sizeof(SLEUTHTYPE)) == 0);
++ fb_assert((search_len % sizeof(SLEUTHTYPE)) == 0);
+ fb_assert(obj->getCanonicalWidth() == sizeof(SLEUTHTYPE));
+
+- bool result = true;
++ const SLEUTHTYPE* const end_match = match + (match_len / sizeof(SLEUTHTYPE));
++ const SLEUTHTYPE* const end_search = search + (search_len / sizeof(SLEUTHTYPE));
+
+- if (*char_class == *(SLEUTHTYPE*)obj->getGdmlNotCanonic()) {
+- ++char_class;
+- result = false;
++ return SLEUTH_AUX(obj, flags, search, end_search, match, end_match);
++}
++
++
++template <class SLEUTHTYPE>
++ULONG SLEUTH_MERGE_NAME(Jrd::thread_db* tdbb_dummy, Jrd::TextType* obj,
++ const SLEUTHTYPE* match, SLONG match_bytes,
++ const SLEUTHTYPE* control, SLONG control_bytes,
++ SLEUTHTYPE* combined, SLONG combined_bytes)
++{
++/**************************************
++ *
++ * E V L _ ? ? _ s l e u t h _ m e r g e
++ *
++ **************************************
++ *
++ * Functional description
++ * Merge the matching pattern and control strings to give a cannonical
++ * matching pattern. Return the length of the combined string.
++ *
++ * What this routine does is to take the language template, strip off
++ * the prefix and put it in the output string, then parse the definitions
++ * into an array of character pointers. The index array is the defined
++ * character. The routine then takes the actual match pattern and uses
++ * the characters in it to index into the definitions to produce an equivalent
++ * pattern in the cannonical language.
++ *
++ * The silly loop setting *v++ to zero initializes the array up to the
++ * highest character defined (also max_op). Believe it or not, that part
++ * is not a bug.
++ *
++ **************************************/
++ fb_assert(match != NULL);
++ fb_assert(control != NULL);
++ fb_assert(combined != NULL);
++
++ fb_assert((match_bytes % sizeof(SLEUTHTYPE)) == 0);
++ fb_assert((control_bytes % sizeof(SLEUTHTYPE)) == 0);
++ fb_assert(obj->getCanonicalWidth() == sizeof(SLEUTHTYPE));
++
++ const SLEUTHTYPE* const end_match = match + (match_bytes / sizeof(SLEUTHTYPE));
++ const SLEUTHTYPE* const end_control = control + (control_bytes / sizeof(SLEUTHTYPE));
++
++ SLEUTHTYPE max_op = 0;
++ SLEUTHTYPE* comb = combined;
++ SLEUTHTYPE* vector[256];
++ SLEUTHTYPE** v = vector;
++ SLEUTHTYPE temp[256];
++ SLEUTHTYPE* t = temp;
++
++/* Parse control string into substitution strings and initializing string */
++
++ while (control < end_control) {
++ SLEUTHTYPE c = *control++;
++ if (*control == *(SLEUTHTYPE*)obj->getGdmlSubstituteCanonic()) {
++ /* Note: don't allow substitution characters larger than vector */
++ SLEUTHTYPE** const end_vector =
++ vector + (((int)c < FB_NELEM(vector)) ? c : 0);
++ while (v <= end_vector)
++ *v++ = 0;
++ *end_vector = t;
++ ++control;
++ while (control < end_control) {
++ c = *control++;
++ if ((t > temp && t[-1] == *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic())
++ || ((c != *(SLEUTHTYPE*)obj->getGdmlCommaCanonic()) && (c != *(SLEUTHTYPE*)obj->getGdmlRParenCanonic())))
++ {
++ *t++ = c;
++ }
++ else
++ break;
++ }
++ *t++ = 0;
++ }
++ else if (c == *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic() && control < end_control)
++ *comb++ = *control++;
++ else if (c == *(SLEUTHTYPE*)obj->getGdmlRParenCanonic())
++ break;
++ else if (c != *(SLEUTHTYPE*)obj->getGdmlLParenCanonic())
++ *comb++ = c;
+ }
+
+- while (char_class < end_class) {
+- const SLEUTHTYPE c = *char_class++;
+- if (c == *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic()) {
+- if (*char_class++ == character)
+- return true;
++ max_op = v - vector;
++
++/* Interpret matching string, substituting where appropriate */
++
++ while (match < end_match) {
++ const SLEUTHTYPE c = *match++;
++
++ /* if we've got a defined character, slurp the definition */
++
++ SLEUTHTYPE* p;
++ if (c <= max_op && (p = vector[c])) {
++ while (*p)
++ *comb++ = *p++;
++
++ /* if we've got the definition of a quote character,
++ slurp the next character too */
++
++ if (comb > combined && comb[-1] == *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic() && *match)
++ *comb++ = *match++;
+ }
+- else if (*char_class == *(SLEUTHTYPE*)obj->getGdmlRangeCanonic()) {
+- char_class += 2;
+- if (character >= c && character <= char_class[-1])
+- return result;
++
++ /* at this point we've got a non-match, but as it might be one of ours,
++ quote it. */
++
++ else {
++ if ((((size_t) c) < FB_NELEM(special)) && special[c] &&
++ comb > combined && comb[-1] != *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic())
++ {
++ *comb++ = *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic();
++ }
++ *comb++ = c;
+ }
+- else if (character == c)
+- return result;
+ }
+
+- return !result;
++/* Put in trailing stuff */
++
++ while (control < end_control)
++ *comb++ = *control++;
++
++ /* YYY - need to add code watching for overflow of combined */
++
++ return (comb - combined) * sizeof(SLEUTHTYPE);
+ }
+
+
================================================================
More information about the pld-cvs-commit
mailing list