comparison src/ChangeLog @ 5126:2a462149bd6a ben-lisp-object

merge
author Ben Wing <ben@xemacs.org>
date Wed, 24 Feb 2010 19:04:27 -0600
parents b5df3737028a 78a3c171a427
children a9c41067dd88
comparison
equal deleted inserted replaced
5125:b5df3737028a 5126:2a462149bd6a
229 * ui-gtk.c (allocate_emacs_gtk_boxed_data): 229 * ui-gtk.c (allocate_emacs_gtk_boxed_data):
230 * window.c (allocate_window): 230 * window.c (allocate_window):
231 * window.c (new_window_mirror): 231 * window.c (new_window_mirror):
232 * window.c (make_dummy_parent): 232 * window.c (make_dummy_parent):
233 Create a simpler interface (ALLOC_LCRECORD) for allocating 233 Create a simpler interface (ALLOC_LCRECORD) for allocating
234
235 2010-02-24 Didier Verna <didier@xemacs.org>
236
237 * glyphs.c: Clarify comment about potential_pixmap_file_instantiator.
238 * glyphs.c (xbm_mask_file_munging): Clarify comment, remove
239 unreachable condition and provide a cuple of assertions.
240 * glyphs.c (xbm_normalize): Clarify comments, error on mask file
241 not found.
242 * glyphs.c (xface_normalize): Ditto, and handle inline data properly.
243
244 2010-02-22 Ben Wing <ben@xemacs.org>
245
246 * .gdbinit.in.in:
247 * Makefile.in.in (batch_test_emacs):
248 test-harness.el is in lisp directory now so change how we call it.
249
250 2010-02-22 Ben Wing <ben@xemacs.org>
251
252 * alloc.c (object_memory_usage_stats):
253 Remove unused var.
254
255 2010-02-21 Ben Wing <ben@xemacs.org>
256
257 * alloc.c:
258 * alloc.c (FREE_FIXED_TYPE_WHEN_NOT_IN_GC):
259 * alloc.c (struct):
260 * alloc.c (tick_lrecord_stats):
261 * alloc.c (tick_lcrecord_stats):
262 * alloc.c (sweep_lcrecords_1):
263 * alloc.c (COUNT_FROB_BLOCK_USAGE):
264 * alloc.c (SWEEP_FIXED_TYPE_BLOCK_1):
265 * alloc.c (free_cons):
266 * alloc.c (free_key_data):
267 * alloc.c (free_button_data):
268 * alloc.c (free_motion_data):
269 * alloc.c (free_process_data):
270 * alloc.c (free_timeout_data):
271 * alloc.c (free_magic_data):
272 * alloc.c (free_magic_eval_data):
273 * alloc.c (free_eval_data):
274 * alloc.c (free_misc_user_data):
275 * alloc.c (free_marker):
276 * alloc.c (gc_sweep_1):
277 * alloc.c (HACK_O_MATIC):
278 * alloc.c (FROB):
279 * alloc.c (object_memory_usage_stats):
280 * alloc.c (Fgarbage_collect):
281 * dumper.c:
282 * dumper.c (pdump_objects_unmark):
283 * lrecord.h:
284 * lrecord.h (enum lrecord_alloc_status):
285 Fixes to memory-usage-tracking code, etc.
286
287 (1) Incorporate NEW_GC stuff into FREE_FIXED_TYPE_WHEN_NOT_IN_GC
288 to avoid duplication.
289
290 (2) Rewrite tick_lcrecord_stats() to include separate
291 tick_lrecord_stats(); use in dumper.c to note pdumped objects.
292
293 (3) Instead of handling frob-block objects specially in
294 object_memory_usage_stats(), have SWEEP_FIXED_TYPE_BLOCK_1
295 increment the stats in lrecord_stats[] so that they get handled
296 like other objects.
297
298 (4) Pluralize entry as entries, etc.
299
300 2010-02-21 Ben Wing <ben@xemacs.org>
301
302 * alloc.c:
303 * alloc.c (pluralize_word):
304 New function to pluralize a word.
305 * alloc.c (pluralize_and_append): New function.
306 * alloc.c (object_memory_usage_stats):
307 Clean up duplication.
308
309 2010-02-21 Vin Shelton <acs@xemacs.org>
310
311 * events.c (event_pixel_translation): Simplify assertion for
312 Visual C 6.
313
314 2010-02-21 Ben Wing <ben@xemacs.org>
315
316 * gc.c (kkcc_marking): Fix compile error.
317 * mc-alloc.c:
318 #if 0 out some unused functions.
319
320 2010-02-21 Ben Wing <ben@xemacs.org>
321
322 * extents.c (process_extents_for_insertion_mapper):
323 Assertion wasn't quite set up correctly in previous patch.
324
325 2010-02-20 Ben Wing <ben@xemacs.org>
326
327 * EmacsFrame.c:
328 * EmacsFrame.c (EmacsFrameRecomputeCellSize):
329 * alloca.c (i00afunc):
330 * buffer.c:
331 * buffer.c (MARKED_SLOT):
332 * buffer.c (complex_vars_of_buffer):
333 * cm.c:
334 * cm.c (cmcheckmagic):
335 * console.c:
336 * console.c (MARKED_SLOT):
337 * device-x.c:
338 * device-x.c (x_get_visual_depth):
339 * emacs.c (sort_args):
340 * eval.c (throw_or_bomb_out):
341 * event-stream.c:
342 * event-stream.c (Fadd_timeout):
343 * event-stream.c (Fadd_async_timeout):
344 * event-stream.c (Frecent_keys):
345 * events.c:
346 * events.c (Fdeallocate_event):
347 * events.c (event_pixel_translation):
348 * extents.c:
349 * extents.c (process_extents_for_insertion_mapper):
350 * fns.c (Fbase64_encode_region):
351 * fns.c (Fbase64_encode_string):
352 * fns.c (Fbase64_decode_region):
353 * fns.c (Fbase64_decode_string):
354 * font-lock.c:
355 * font-lock.c (find_context):
356 * frame-x.c:
357 * frame-x.c (x_wm_mark_shell_size_user_specified):
358 * frame-x.c (x_wm_mark_shell_position_user_specified):
359 * frame-x.c (x_wm_set_shell_iconic_p):
360 * frame-x.c (x_wm_set_cell_size):
361 * frame-x.c (x_wm_set_variable_size):
362 * frame-x.c (x_wm_store_class_hints):
363 * frame-x.c (x_wm_maybe_store_wm_command):
364 * frame-x.c (x_initialize_frame_size):
365 * frame.c (delete_frame_internal):
366 * frame.c (change_frame_size_1):
367 * free-hook.c (check_free):
368 * free-hook.c (note_block_input):
369 * free-hook.c (log_gcpro):
370 * gccache-gtk.c (gc_cache_lookup):
371 * gccache-x.c:
372 * gccache-x.c (gc_cache_lookup):
373 * glyphs-gtk.c:
374 * glyphs-gtk.c (init_image_instance_from_gdk_pixmap):
375 * glyphs-x.c:
376 * glyphs-x.c (extract_xpm_color_names):
377 * insdel.c:
378 * insdel.c (move_gap):
379 * keymap.c:
380 * keymap.c (keymap_lookup_directly):
381 * keymap.c (keymap_delete_inverse_internal):
382 * keymap.c (accessible_keymaps_mapper_1):
383 * keymap.c (where_is_recursive_mapper):
384 * lisp.h:
385 * lstream.c (make_lisp_buffer_stream_1):
386 * macros.c:
387 * macros.c (pop_kbd_macro_event):
388 * mc-alloc.c (remove_page_from_used_list):
389 * menubar-x.c:
390 * menubar-x.c (set_frame_menubar):
391 * ralloc.c:
392 * ralloc.c (obtain):
393 * ralloc.c (relinquish):
394 * ralloc.c (relocate_blocs):
395 * ralloc.c (resize_bloc):
396 * ralloc.c (r_alloc_free):
397 * ralloc.c (r_re_alloc):
398 * ralloc.c (r_alloc_thaw):
399 * ralloc.c (init_ralloc):
400 * ralloc.c (Free_Addr_Block):
401 * scrollbar-x.c:
402 * scrollbar-x.c (x_update_scrollbar_instance_status):
403 * sunplay.c (init_device):
404 * unexnt.c:
405 * unexnt.c (read_in_bss):
406 * unexnt.c (map_in_heap):
407 * window.c:
408 * window.c (real_window):
409 * window.c (window_display_lines):
410 * window.c (window_display_buffer):
411 * window.c (set_window_display_buffer):
412 * window.c (unshow_buffer):
413 * window.c (Fget_lru_window):
414 if (...) ABORT(); ---> assert();
415
416 More specifically:
417
418 if (x == y) ABORT (); --> assert (x != y);
419 if (x != y) ABORT (); --> assert (x == y);
420 if (x > y) ABORT (); --> assert (x <= y);
421 etc.
422 if (!x) ABORT (); --> assert (x);
423 if (x) ABORT (); --> assert (!x);
424
425 DeMorgan's Law's applied and manually simplified:
426 if (x && !y) ABORT (); --> assert (!x || y);
427 if (!x || y >= z) ABORT (); --> assert (x && y < z);
428
429 Checked to make sure that assert() of an expression with side
430 effects ensures that the side effects get executed even when
431 asserts are disabled, and add a comment about this being a
432 requirement of any "disabled assert" expression.
433
434 * depend:
435 * make-src-depend:
436 * make-src-depend (PrintDeps):
437 Fix broken code in make-src-depend so it does what it was always
438 supposed to do, which was separate out config.h and lisp.h and
439 all the files they include into separate variables in the
440 depend part of Makefile so that quick-build can turn off the
441 lisp.h/config.h/text.h/etc. dependencies of the source files, to
442 speed up recompilation.
443
444
445 2010-02-20 Ben Wing <ben@xemacs.org>
446
447 * EmacsFrame.c (EmacsFrameRecomputeCellSize):
448 * faces.c (default_face_font_info):
449 * faces.c (default_face_width_and_height):
450 * faces.c (Fface_list):
451 * faces.h:
452 * frame-gtk.c (gtk_set_initial_frame_size):
453 * frame-gtk.c (gtk_set_frame_size):
454 * frame-gtk.c (gtk_recompute_cell_sizes):
455 * frame.c:
456 * frame.c (frame_conversion_internal_1):
457 * frame.c (change_frame_size_1):
458 * frame.c (change_frame_size):
459 * glyphs-msw.c (mswindows_combo_box_instantiate):
460 * glyphs-widget.c (widget_instantiate):
461 * glyphs-widget.c (tree_view_query_geometry):
462 * glyphs-widget.c (Fwidget_logical_to_character_width):
463 * glyphs-widget.c (Fwidget_logical_to_character_height):
464 * indent.c (vmotion_pixels):
465 * redisplay-output.c (get_cursor_size_and_location):
466 * redisplay-xlike-inc.c (XLIKE_output_eol_cursor):
467 * redisplay-xlike-inc.c (XLIKE_flash):
468 * redisplay.c (calculate_baseline):
469 * redisplay.c (start_with_point_on_display_line):
470 * redisplay.c (glyph_to_pixel_translation):
471 * redisplay.c (pixel_to_glyph_translation):
472 * window.c (margin_width_internal):
473 * window.c (frame_size_valid_p):
474 * window.c (frame_pixsize_valid_p):
475 * window.c (check_frame_size):
476 * window.c (set_window_pixsize):
477 * window.c (window_pixel_height_to_char_height):
478 * window.c (window_char_height_to_pixel_height):
479 * window.c (window_displayed_height):
480 * window.c (window_pixel_width_to_char_width):
481 * window.c (window_char_width_to_pixel_width):
482 * window.c (change_window_height):
483 * window.c (window_scroll):
484 * window.h:
485 IMPORTANT: Aidan and Carbon Repo, please pay attention and fix
486 appropriately!
487
488 Rename: default_face_height_and_width -> default_face_width_and_height
489 and reverse width/height arguments.
490
491 Reverse width/height arguments to the following functions:
492 -- default_face_font_info
493 -- default_face_height_and_width (see above)
494 -- check_frame_size
495 -- frame_size_valid_p (made into a static function)
496
497 Fix a redisplay bug where args to default_face_height_and_width
498 were in the wrong order.
499
500
501 2010-02-20 Ben Wing <ben@xemacs.org>
502
503 * syswindows.h:
504 Add table about GNU Emacs -> XEmacs Windows constants from
505 the internals manual.
506
507 * frame.c:
508 Shrink size of diagram consistent with internals manual.
509
510 * alloc.c:
511 * compiler.h:
512 * console.c:
513 * events.c:
514 * gc.c (gc_stat_start_new_gc):
515 * gc.c (gc_stat_resume_gc):
516 * gc.c (kkcc_marking):
517 * gc.c (gc_1):
518 * gc.c (gc):
519 * objects-tty.c:
520 * redisplay-msw.c:
521 * redisplay-msw.c (mswindows_clear_region):
522 * syntax.c:
523 * syntax.c (ST_COMMENT_STYLE):
524 * sysdep.c:
525 Fix various compiler warnings.
526
527 2010-02-16 Ben Wing <ben@xemacs.org>
528
529 * frame-impl.h:
530 * frame-impl.h (FRAME_INTERNAL_BORDER_WIDTH):
531 * frame-impl.h (FRAME_REAL_TOOLBAR_BOUNDS):
532 * frame-impl.h (FRAME_REAL_TOP_TOOLBAR_BOUNDS):
533 * frame-impl.h (FRAME_BOTTOM_BORDER_START):
534 * frame-impl.h (FRAME_LEFT_BORDER_START):
535 * frame-impl.h (FRAME_RIGHT_BORDER_START):
536 * frame.c (frame_conversion_internal_1):
537 * frame.c (change_frame_size_1):
538 * redisplay-output.c (clear_left_border):
539 * redisplay-output.c (clear_right_border):
540 * redisplay-output.c (redisplay_clear_top_of_window):
541 * redisplay-output.c (redisplay_clear_to_window_end):
542 * redisplay-output.c (redisplay_clear_bottom_of_window):
543 Rename FRAME_BORDER_* to FRAME_INTERNAL_BORDER_*. Add
544 general FRAME_INTERNAL_BORDER_SIZE(). Add FRAME_REAL_TOOLBAR_BOUNDS()
545 to encompass the entire size of the toolbar including its border.
546 Add specific top/left/bottom/right versions of this macro.
547 Rewrite FRAME_*_BORDER_START and FRAME_*_BORDER_END to take into use
548 FRAME_REAL_*_TOOLBAR_BOUNDS(). Add some comments about existing
549 problems in frame sizing and how they might be fixed. Simplify
550 change_frame_size_1() using the macros just created.
551
552 2010-02-15 Ben Wing <ben@xemacs.org>
553
554 * frame.c (change_frame_size_1):
555 Simplify the logic in this function.
556
557 (1) Don't allow 0 as the value of height or width. The old code
558 that tried to allow this was totally broken, anyway, so obviously
559 this never happens any more.
560
561 (2) Don't duplicate the code in frame_conversion_internal() that
562 converts displayable pixel size to total pixel size -- just call
563 that function.
564
565 2010-02-15 Ben Wing <ben@xemacs.org>
566
567 * EmacsFrame.c:
568 * EmacsFrame.c (EmacsFrameResize):
569 * console-msw-impl.h:
570 * console-msw-impl.h (struct mswindows_frame):
571 * console-msw-impl.h (FRAME_MSWINDOWS_TARGET_RECT):
572 * device-tty.c:
573 * device-tty.c (tty_asynch_device_change):
574 * event-msw.c:
575 * event-msw.c (mswindows_wnd_proc):
576 * faces.c (Fface_list):
577 * faces.h:
578 * frame-gtk.c:
579 * frame-gtk.c (gtk_set_initial_frame_size):
580 * frame-gtk.c (gtk_set_frame_size):
581 * frame-msw.c:
582 * frame-msw.c (mswindows_init_frame_1):
583 * frame-msw.c (mswindows_set_frame_size):
584 * frame-msw.c (mswindows_size_frame_internal):
585 * frame-msw.c (msprinter_init_frame_3):
586 * frame.c:
587 * frame.c (enum):
588 * frame.c (Fmake_frame):
589 * frame.c (adjust_frame_size):
590 * frame.c (store_minibuf_frame_prop):
591 * frame.c (Fframe_property):
592 * frame.c (Fframe_properties):
593 * frame.c (Fframe_displayable_pixel_height):
594 * frame.c (Fframe_displayable_pixel_width):
595 * frame.c (internal_set_frame_size):
596 * frame.c (Fset_frame_height):
597 * frame.c (Fset_frame_pixel_height):
598 * frame.c (Fset_frame_displayable_pixel_height):
599 * frame.c (Fset_frame_width):
600 * frame.c (Fset_frame_pixel_width):
601 * frame.c (Fset_frame_displayable_pixel_width):
602 * frame.c (Fset_frame_size):
603 * frame.c (Fset_frame_pixel_size):
604 * frame.c (Fset_frame_displayable_pixel_size):
605 * frame.c (frame_conversion_internal_1):
606 * frame.c (get_frame_displayable_pixel_size):
607 * frame.c (change_frame_size_1):
608 * frame.c (change_frame_size):
609 * frame.c (generate_title_string):
610 * frame.h:
611 * gtk-xemacs.c:
612 * gtk-xemacs.c (gtk_xemacs_size_request):
613 * gtk-xemacs.c (gtk_xemacs_size_allocate):
614 * gtk-xemacs.c (gtk_xemacs_paint):
615 * gutter.c:
616 * gutter.c (update_gutter_geometry):
617 * redisplay.c (end_hold_frame_size_changes):
618 * redisplay.c (redisplay_frame):
619 * toolbar.c:
620 * toolbar.c (update_frame_toolbars_geometry):
621 * window.c:
622 * window.c (frame_pixsize_valid_p):
623 * window.c (check_frame_size):
624 Various fixes to frame geometry to make it a bit easier to understand
625 and fix some bugs.
626
627 1. IMPORTANT: Some renamings. Will need to be applied carefully to
628 the carbon repository, in the following order:
629
630 -- pixel_to_char_size -> pixel_to_frame_unit_size
631 -- char_to_pixel_size -> frame_unit_to_pixel_size
632 -- pixel_to_real_char_size -> pixel_to_char_size
633 -- char_to_real_pixel_size -> char_to_pixel_size
634 -- Reverse second and third arguments of change_frame_size() and
635 change_frame_size_1() to try to make functions consistent in
636 putting width before height.
637 -- Eliminate old round_size_to_char, because it didn't really
638 do anything differently from round_size_to_real_char()
639 -- round_size_to_real_char -> round_size_to_char; any places that
640 called the old round_size_to_char should just call the new one.
641
642 2. IMPORTANT FOR CARBON: The set_frame_size() method is now passed
643 sizes in "frame units", like all other frame-sizing functions,
644 rather than some hacked-up combination of char-cell units and
645 total pixel size. This only affects window systems that use
646 "pixelated geometry", and I'm not sure if Carbon is one of them.
647 MS Windows is pixelated, X and GTK are not. For pixelated-geometry
648 systems, the size in set_frame_size() is in displayable pixels
649 rather than total pixels and needs to be converted appropriately;
650 take a look at the changes made to mswindows_set_frame_size()
651 method if necessary.
652
653 3. Add a big long comment in frame.c describing how frame geometry
654 works.
655
656 4. Remove MS Windows-specific character height and width fields,
657 duplicative and unused.
658
659 5. frame-displayable-pixel-* and set-frame-displayable-pixel-*
660 didn't use to work on MS Windows, but they do now.
661
662 6. In general, clean up the handling of "pixelated geometry" so
663 that fewer functions have to worry about this. This is really
664 an abomination that should be removed entirely but that will
665 have to happen later. Fix some buggy code in
666 frame_conversion_internal() that happened to "work" because it
667 was countered by oppositely buggy code in change_frame_size().
668
669 7. Clean up some frame-size code in toolbar.c and use functions
670 already provided in frame.c instead of rolling its own.
671
672 8. Fix check_frame_size() in window.c, which formerly didn't take
673 pixelated geometry into account.
674
675
676 2010-02-15 Ben Wing <ben@xemacs.org>
677
678 * mc-alloc.c:
679 * mc-alloc.c (mc_realloc_1):
680 * mc-alloc.c (set_dirty_bit):
681 * mc-alloc.c (set_dirty_bit_for_address):
682 * mc-alloc.c (get_dirty_bit):
683 * mc-alloc.c (get_dirty_bit_for_address):
684 * mc-alloc.c (set_protection_bit):
685 * mc-alloc.c (set_protection_bit_for_address):
686 * mc-alloc.c (get_protection_bit):
687 * mc-alloc.c (get_protection_bit_for_address):
688 * mc-alloc.c (get_page_start):
689 * vdb-win32.c (win32_fault_handler):
690 * vdb.c:
691 Fix some compile warnings, make vdb test code conditional on
692 DEBUG_XEMACS.
693
694 2010-02-15 Ben Wing <ben@xemacs.org>
695
696 * regex.c:
697 * regex.c (DEBUG_FAIL_PRINT1):
698 * regex.c (PUSH_FAILURE_POINT):
699 * regex.c (POP_FAILURE_POINT):
700 * regex.c (regex_compile):
701 * regex.c (re_match_2_internal):
702 * regex.h:
703 * search.c:
704 * search.c (search_buffer):
705 * search.c (debug_regexps_changed):
706 * search.c (vars_of_search):
707 Add an internal variable debug_regexps and a corresponding Lisp
708 variable `debug-regexps' that takes a list of areas in which to
709 display debugging info about regex compilation and matching
710 (currently three areas exist). Use existing debugging code
711 already in regex.c and modify it so that it recognizes the
712 debug_regexps variable and the flags in it.
713
714 Rename variable `debug-xemacs-searches' to just `debug-searches',
715 consistent with other debug vars.
716
717 2010-02-20 Ben Wing <ben@xemacs.org>
718
719 * device-x.c (Fx_get_resource):
720 * dynarr.c:
721 * dynarr.c (Dynarr_realloc):
722 * dynarr.c (Dynarr_newf):
723 * dynarr.c (Dynarr_lisp_realloc):
724 * dynarr.c (Dynarr_lisp_newf):
725 * dynarr.c (Dynarr_resize):
726 * dynarr.c (Dynarr_insert_many):
727 * dynarr.c (Dynarr_delete_many):
728 * dynarr.c (Dynarr_memory_usage):
729 * dynarr.c (stack_like_free):
730 * file-coding.c (coding_reader):
731 * file-coding.c (gzip_convert):
732 * gutter.c (output_gutter):
733 * lisp.h:
734 * lisp.h (Dynarr_declare):
735 * lisp.h (DYNARR_SET_LISP_IMP):
736 * lisp.h (CHECK_NATNUM):
737 * profile.c (create_timing_profile_table):
738 * redisplay-output.c (sync_rune_structs):
739 * redisplay-output.c (sync_display_line_structs):
740 * redisplay-output.c (redisplay_output_window):
741 * redisplay.c:
742 * redisplay.c (get_display_block_from_line):
743 * redisplay.c (add_ichar_rune_1):
744 * redisplay.c (ensure_modeline_generated):
745 * redisplay.c (generate_displayable_area):
746 * redisplay.c (regenerate_window):
747 * redisplay.c (update_line_start_cache):
748 * signal.c:
749 * signal.c (check_quit):
750
751 Lots of rewriting of dynarr code.
752
753 (1) Lots of documentation added. Also fix places that
754 referenced a now-bogus internals node concerning redisplay
755 critical sections.
756
757 (2) Rename:
758
759 Dynarr_add_lisp_string -> Dynarr_add_ext_lisp_string
760 Dynarr_set_length -> Dynarr_set_lengthr ("restricted")
761 Dynarr_increment -> Dynarr_incrementr
762 Dynarr_resize_if -> Dynarr_resize_to_add
763
764 (3) New functions:
765
766 Dynarr_elsize = dy->elsize_
767 Dynarr_set_length(): Set length, resizing as necessary
768 Dynarr_set_length_and_zero(): Set length, resizing as necessary,
769 zeroing out new elements
770 Dynarr_increase_length(), Dynarr_increase_length_and_zero():
771 Optimization of Dynarr_set_length(), Dynarr_set_length_and_zero()
772 when size is known to increase
773 Dynarr_resize_to_fit(): Resize as necessary to fit a given length.
774 Dynarr_set(): Set element at a given position, increasing length
775 as necessary and setting any newly created positions to 0
776
777 (4) Use Elemcount, Bytecount.
778
779 (5) Rewrite many macros as inline functions.
780
781 2010-02-20 Ben Wing <ben@xemacs.org>
782
783 * tests.c:
784 Fix operation of c-tests.
234 785
235 2010-02-19 Aidan Kehoe <kehoea@parhasard.net> 786 2010-02-19 Aidan Kehoe <kehoea@parhasard.net>
236 787
237 * fns.c (split_string_by_ichar_1): 788 * fns.c (split_string_by_ichar_1):
238 Use better types (e.g., not an Ichar for a buffer size) in this 789 Use better types (e.g., not an Ichar for a buffer size) in this