1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-01 11:20:41 -08:00

Improve commentary in 'field_relpos'

* src/pdumper.c (PDUMPER_MAX_OBJECT_SIZE): New macro.
(field_relpos): Use PDUMPER_MAX_OBJECT_SIZE, and comment on
why we require that relpos be not too large.
This commit is contained in:
Eli Zaretskii 2019-04-03 20:41:47 +03:00
parent b29b79efd9
commit 2bcf0f097c

View file

@ -1777,6 +1777,8 @@ dump_roots (struct dump_context *ctx)
visit_static_gc_roots (visitor);
}
#define PDUMPER_MAX_OBJECT_SIZE 2048
static dump_off
field_relpos (const void *in_start, const void *in_field)
{
@ -1784,7 +1786,15 @@ field_relpos (const void *in_start, const void *in_field)
ptrdiff_t in_field_val = (ptrdiff_t) in_field;
eassert (in_start_val <= in_field_val);
ptrdiff_t relpos = in_field_val - in_start_val;
eassert (relpos < 1024); /* Sanity check. */
/* The following assertion attempts to detect bugs whereby IN_START
and IN_FIELD don't point to the same object/structure, on the
assumption that a too-large difference between them is
suspicious. As of Apr 2019 the largest object we dump -- 'struct
buffer' -- is slightly smaller than 1KB, and we want to leave
some margin for future extensions. If the assertion below is
ever violated, make sure the two pointers indeed point into the
same object, and if so, enlarge the value of PDUMPER_MAX_OBJECT_SIZE. */
eassert (relpos < PDUMPER_MAX_OBJECT_SIZE);
return (dump_off) relpos;
}