GNU bug report logs - #59755
CC Mode 5.35.2 (C/*l); Incorrect fontification of `xid' as type

Previous Next

Package: cc-mode;

Reported by: Po Lu <luangruo <at> yahoo.com>

Date: Fri, 2 Dec 2022 03:21:01 UTC

Severity: normal

To reply to this bug, email your comments to 59755 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-cc-mode <at> gnu.org:
bug#59755; Package cc-mode. (Fri, 02 Dec 2022 03:21:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Po Lu <luangruo <at> yahoo.com>:
New bug report received and forwarded. Copy sent to bug-cc-mode <at> gnu.org. (Fri, 02 Dec 2022 03:21:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Po Lu <luangruo <at> yahoo.com>
To: bug-gnu-emacs <at> gnu.org
Subject: CC Mode 5.35.2 (C/*l); Incorrect fontification of `xid' as type
Date: Fri, 02 Dec 2022 11:20:01 +0800
Package: cc-mode

Insert the following file in a C mode buffer:

/* idalloc.c - client resource management.  */

#include <config.h>

#include "idalloc.h"

/* Array of all resource tables.  */
struct resource_table *resource_tables[MAX_TABLE_ID];

/* Find a single unused resource table ID.  Return (card16) -1 upon
   failure.  */

static card16
get_free_id (void)
{
  card16 i;

  for (i = 0; i <= MAX_TABLE_ID; ++i)
    {
      if (!resource_tables[i])
	return i;
    }

  return (card16) -1;
}

/* Create a resource table for the server or for a new client.  Return
   NULL if the table could not be allocated.  */

struct resource_table *
get_resource_table (void)
{
  struct resource_table *table;
  card16 id;

  id = find_free_id ();

  if (id == (card16) -1)
    return NULL;

  table = server_malloc (sizeof *table);

  if (!table)
    return;

  table->id = id;
  table->resource_map = gl_map_nx_create_empty (GL_HASH_MAP, NULL,
						NULL, NULL, NULL);

  if (!table->resource_map)
    {
      server_free (table);
      return NULL;
    }

  resource_tables[table->id] = table;
  return table;
}

/* Look up a resource given the specified XID and type, and return it
   in RESOURCE.  If CLIENT is specified, the lookup is being done on
   behalf of the specified client.  Return the result of the lookup:

     L_SUCCESS   - the lookup was successful.
     L_WRONGTYPE - the resource was found, but it is the wrong type.
     L_ACCESS	 - the resource was found, but cannot be accessed.
     L_ERROR     - the resource was not found.

   The upper 10 bits of the XID provide the index into the resource
   table, and the lower 19 bits are used as the key to the hash table.

   Any resource found is returned in RESOURCE, which is otherwise set
   to NULL.  */

enum lookup_result
id_lookup (xid xid, enum resource_type type, struct client *client,
	   struct resource **resource)
{
  card16 table_id;
  struct resource_table *table;

  *resource = NULL;

  table_id = (xid >> (29 - TABLE_ID_BITS) & MAX_TABLE_ID);
  table = resource_tables[table_id];

  if (!table)
    return L_ERROR;

  return id_lookup_1 (xid, type, client, resource);
}

enum lookup_result
id_lookup_1 (xid xid, struct resource_table *resource_table,
	     enum resource_type type, struct client *client,
	     struct resource **resource)
{
  void *value;

  *resource = NULL;

  if (!gl_map_search (resource_table->map,
		      (intptr_t) (xid & TABLE_RESOURCE_MASK),
		      &value))
    return;
}

and scroll to the very end.  In "id_lookup_1", every occurrence of "xid"
will be fontified as a type!.

Emacs  : GNU Emacs 39.0.60 (build 7, x86_64-pc-linux-gnu)
 of 2022-12-02
Package: CC Mode 5.35.2 (C/*l)
Buffer Style: gnu
c-emacs-features: (pps-extended-state col-0-paren posix-char-classes gen-string-delim gen-comment-delim syntax-properties category-properties 1-bit)

current state:
==============
(setq
 c-basic-offset 2
 c-comment-only-line-offset '(0 . 0)
 c-indent-comment-alist '((anchored-comment column . 0) (end-block space . 1) (cpp-end-block space . 2))
 c-indent-comments-syntactically-p nil
 c-block-comment-prefix ""
 c-comment-prefix-regexp '((pike-mode . "//+!?\\|\\**") (awk-mode . "#+") (other . "//+\\|\\**"))
 c-doc-comment-style '((java-mode . javadoc) (pike-mode . autodoc) (c-mode . gtkdoc) (c++-mode . gtkdoc))
 c-cleanup-list '(scope-operator)
 c-hanging-braces-alist '((substatement-open before after) (arglist-cont-nonempty))
 c-hanging-colons-alist nil
 c-hanging-semi&comma-criteria '(c-semi&comma-inside-parenlist)
 c-backslash-column 48
 c-backslash-max-column 72
 c-special-indent-hook '(t c-gnu-impose-minimum)
 c-label-minimum-indentation 1
 c-offsets-alist '((inexpr-class . +)
		   (inexpr-statement . +)
		   (lambda-intro-cont . +)
		   (inlambda . 0)
		   (template-args-cont c-lineup-template-args +)
		   (incomposition . +)
		   (inmodule . +)
		   (innamespace . +)
		   (inextern-lang . +)
		   (composition-close . 0)
		   (module-close . 0)
		   (namespace-close . 0)
		   (extern-lang-close . 0)
		   (composition-open . 0)
		   (module-open . 0)
		   (namespace-open . 0)
		   (extern-lang-open . 0)
		   (objc-method-call-cont c-lineup-ObjC-method-call-colons c-lineup-ObjC-method-call +)
		   (objc-method-args-cont . c-lineup-ObjC-method-args)
		   (objc-method-intro . [0])
		   (friend . 0)
		   (cpp-define-intro c-lineup-cpp-define +)
		   (cpp-macro-cont . +)
		   (cpp-macro . [0])
		   (inclass . +)
		   (stream-op . c-lineup-streamop)
		   (arglist-cont-nonempty c-lineup-gcc-asm-reg c-lineup-arglist)
		   (arglist-cont c-lineup-gcc-asm-reg 0)
		   (comment-intro c-lineup-knr-region-comment c-lineup-comment)
		   (catch-clause . 0)
		   (else-clause . 0)
		   (do-while-closure . 0)
		   (access-label . -)
		   (case-label . 0)
		   (substatement . +)
		   (statement-case-intro . +)
		   (statement . 0)
		   (brace-entry-open . 0)
		   (brace-list-entry . 0)
		   (brace-list-close . 0)
		   (block-close . 0)
		   (block-open . 0)
		   (inher-cont . c-lineup-multi-inher)
		   (inher-intro . +)
		   (member-init-cont . c-lineup-multi-inher)
		   (member-init-intro . +)
		   (annotation-var-cont . +)
		   (annotation-top-cont . 0)
		   (topmost-intro . 0)
		   (knr-argdecl . 0)
		   (func-decl-cont . +)
		   (inline-close . 0)
		   (class-close . 0)
		   (class-open . 0)
		   (defun-block-intro . +)
		   (defun-close . 0)
		   (defun-open . 0)
		   (c . c-lineup-C-comments)
		   (string . c-lineup-dont-change)
		   (topmost-intro-cont first c-lineup-topmost-intro-cont c-lineup-gnu-DEFUN-intro-cont)
		   (brace-list-intro first c-lineup-2nd-brace-entry-in-arglist c-lineup-class-decl-init-+ +)
		   (brace-list-open . +)
		   (inline-open . 0)
		   (arglist-close . c-lineup-arglist)
		   (arglist-intro . c-lineup-arglist-intro-after-paren)
		   (statement-cont . +)
		   (statement-case-open . +)
		   (label . 0)
		   (substatement-label . 0)
		   (substatement-open . +)
		   (knr-argdecl-intro . 5)
		   (statement-block-intro . +)
		   )
 c-buffer-is-cc-mode 'c-mode
 c-tab-always-indent t
 c-syntactic-indentation t
 c-syntactic-indentation-in-macros t
 c-ignore-auto-fill '(string cpp code)
 c-auto-align-backslashes t
 c-backspace-function 'backward-delete-char-untabify
 c-delete-function 'delete-char
 c-electric-pound-behavior nil
 c-default-style '((java-mode . "java") (awk-mode . "awk") (other . "gnu"))
 c-enable-xemacs-performance-kludge-p nil
 c-old-style-variable-behavior nil
 defun-prompt-regexp nil
 tab-width 8
 comment-column 32
 parse-sexp-ignore-comments t
 parse-sexp-lookup-properties t
 auto-fill-function nil
 comment-multi-line t
 comment-start-skip "\\(?://+\\|/\\*+\\)\\s *"
 fill-prefix nil
 fill-column 70
 paragraph-start "[ 	]*\\(//+\\|\\**\\)[ 	]*$\\|^\f"
 adaptive-fill-mode t
 adaptive-fill-regexp "[ 	]*\\(//+\\|\\**\\)[ 	]*\\([ 	]*\\([-–!|#%;>*·•‣⁃◦]+[ 	]*\\)*\\)"
 )




This bug report was last modified 1 year and 146 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.