Hi there (again): We're discovering a few things as we get our build system up and running (to build the compiler docs along with our 64-bit compiler (optimized for an Opteron system). The goal is to build LyX 1.3.6 with the change bar patch on a 64-bit Opteron system for a number of LyX distributions.
Are you using LyX on a 64-bit system (specifically Opteron)? Can we expect it to "just work"? Any hints you might pass along? Thanks! --jane Here's the note from Jeremy, the engineer who's created the change tracking patch and is now sorting out the build: ----- The change tracking patch added a boolean argument to many of the editing functions that specified if the change was to be tracked. In about every case, this has the default value of true. I have discovered a possible ambiguity that needs to be resolved. In paragraph.C, erase() was originally defined as: void erase(lyx::pos_type pos); The change tracking patch modified this and added another erase() call that allowed the caller to specify a range: void erase(lyx::pos_type pos, bool flag=true); bool erase(lyx::pos_type start, lyx::pos_type end, bool flag=true); lyx::pos_type is defined in src/support/types.h as std::vector<char>::difference_type. On a system on which this type matches the bool type, erase (11, 1) can appear to be either a call to erase the character range from 11 to 1, or to erase the character at 11, with change tracking on. I'm not certain I like this design choice, but it can be worked around with this patch: --- 1.3/src/CutAndPaste.C 2005-07-18 17:17:30 -07:00 +++ 1.4/src/CutAndPaste.C 2005-09-08 13:58:47 -07:00 @@ -92,7 +92,7 @@ } if (!endpar || startpar == *endpar) { - if (startpar->erase(start, end)) { + if (startpar->erase(start, end, true)) { // Some chars were erased, go to start to be safe end = start; } @@ -103,7 +103,7 @@ // clear end/begin fragments of the first/last par in selection actually_erased |= (startpar)->erase(start, startpar->size()); - if ((*endpar)->erase(0, end)) { + if ((*endpar)->erase(0, end, true)) { actually_erased = true; end = 0; } @@ -121,7 +121,7 @@ // "erase" the contents of the par if (pit != *endpar) { - actually_erased |= pit->erase(0, pit->size()); + actually_erased |= pit->erase(0, pit->size(), true); // remove the par if it's now empty if (actually_erased) { -- Jane McKean Technical Documentation PathScale, Inc. [EMAIL PROTECTED]