]> git.eshelyaron.com Git - emacs.git/commitdiff
insert-file-contents likely-end memory objects
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 16 Jul 2025 18:16:13 +0000 (11:16 -0700)
committerEshel Yaron <me@eshelyaron.com>
Thu, 24 Jul 2025 11:53:20 +0000 (13:53 +0200)
* src/fileio.c (Finsert_file_contents): Treat memory objects like
regular files when inferring likely end.  Simplify likely end
computation.

(cherry picked from commit 92dee45c5e4e7be1682a8a3aacdfd7d9c87cf286)

src/fileio.c

index e20249379e7139ebf22469e0f602dcc34db1632b..2c8855dba911a7114eea8cd02dd231d6ac0e00f1 100644 (file)
@@ -4255,22 +4255,18 @@ by calling `format-decode', which see.  */)
 
   /* Check now whether the buffer will become too large,
      in the likely case where the file's length is not changing.
-     This saves a lot of needless work before a buffer overflow.  */
-  if (regular)
-    {
-      /* The likely offset where we will stop reading.  We could read
-        more (or less), if the file grows (or shrinks) as we read it.  */
-      off_t likely_end = min (end_offset, file_size_hint);
-
-      if (beg_offset < likely_end)
-       {
-         ptrdiff_t buf_bytes
-           = Z_BYTE - (!NILP (replace) ? ZV_BYTE - BEGV_BYTE  : 0);
-         ptrdiff_t buf_growth_max = BUF_BYTES_MAX - buf_bytes;
-         off_t likely_growth = likely_end - beg_offset;
-         if (buf_growth_max < likely_growth)
-           buffer_overflow ();
-       }
+     This saves a lot of needless work before a buffer overflow.
+     If LIKELY_END is nonnegative, it is likely where we will stop reading.
+     We could read more (or less), if the file grows (or shrinks).  */
+  off_t likely_end = min (end_offset, file_size_hint);
+  if (beg_offset < likely_end)
+    {
+      ptrdiff_t buf_bytes
+       = Z_BYTE - (!NILP (replace) ? ZV_BYTE - BEGV_BYTE  : 0);
+      ptrdiff_t buf_growth_max = BUF_BYTES_MAX - buf_bytes;
+      off_t likely_growth = likely_end - beg_offset;
+      if (buf_growth_max < likely_growth)
+       buffer_overflow ();
     }
 
   /* Prevent redisplay optimizations.  */