From 4abc7470be618162b965f45ca02825303931015f Mon Sep 17 00:00:00 2001 From: Dave Love Date: Fri, 10 Jan 2003 12:49:38 +0000 Subject: [PATCH] (syms_of_composite): Make composition_hash_table weak. --- src/ChangeLog | 5 +++++ src/composite.c | 18 +++++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 7a15b6c73fa..66f295b0932 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2003-01-10 Dave Love + + * composite.c (syms_of_composite): Make composition_hash_table + weak. + 2003-01-09 Kim F. Storm * process.c (Fmake_network_process): Convert new port number diff --git a/src/composite.c b/src/composite.c index 56acce6d1ce..7bd50a23396 100644 --- a/src/composite.c +++ b/src/composite.c @@ -92,32 +92,32 @@ Boston, MA 02111-1307, USA. */ The former is a hash table in which keys are COMPONENTS-VECs and values are the corresponding COMPOSITION-IDs. This hash table is - weak, but as each key (COMPONENTS-VEC) is also kept as a value of + weak, but as each key (COMPONENTS-VEC) is also kept as a value of the `composition' property, it won't be collected as garbage until all - text that have the same COMPONENTS-VEC are deleted. + bits of text that have the same COMPONENTS-VEC are deleted. The latter is a table of pointers to `struct composition' indexed - by COMPOSITION-ID. This structure keep the other information (see + by COMPOSITION-ID. This structure keeps the other information (see composite.h). In general, a text property holds information about individual characters. But, a `composition' property holds information about - a sequence of characters (in this sense, it is like `intangible' + a sequence of characters (in this sense, it is like the `intangible' property). That means that we should not share the property value - in adjacent compositions we can't distinguish them if they have the + in adjacent compositions -- we can't distinguish them if they have the same property. So, after any changes, we call `update_compositions' and change a property of one of adjacent compositions to a copy of it. This function also runs a proper composition modification function to make a composition that gets invalid by the change valid again. - As a value of `composition' property holds information about a + As the value of the `composition' property holds information about a specific range of text, the value gets invalid if we change the - text in the range. We treat `composition' property always + text in the range. We treat the `composition' property as always rear-nonsticky (currently by setting default-text-properties to (rear-nonsticky (composition))) and we never make properties of adjacent compositions identical. Thus, any such changes make the - range just shorter. So, we can check the validity of `composition' + range just shorter. So, we can check the validity of the `composition' property by comparing LENGTH information with the actual length of the composition. @@ -843,7 +843,7 @@ syms_of_composite () args[0] = QCtest; args[1] = Qequal; args[2] = QCweakness; - args[3] = Qnil; + args[3] = Qt; args[4] = QCsize; args[5] = make_number (311); composition_hash_table = Fmake_hash_table (6, args); -- 2.39.2