Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F143371153
D10269.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
16 KB
Referenced Files
None
Subscribers
None
D10269.diff
View Options
Index: head/usr.bin/grep/Makefile
===================================================================
--- head/usr.bin/grep/Makefile
+++ head/usr.bin/grep/Makefile
@@ -17,7 +17,7 @@
# Extra files ported backported form some regex improvements
.PATH: ${.CURDIR}/regex
-SRCS+= fastmatch.c hashtable.c tre-compile.c tre-fastmatch.c xmalloc.c
+SRCS+= fastmatch.c hashtable.c tre-compile.c tre-fastmatch.c
CFLAGS+=-I${.CURDIR}/regex
CFLAGS.gcc+= --param max-inline-insns-single=500
Index: head/usr.bin/grep/regex/fastmatch.c
===================================================================
--- head/usr.bin/grep/regex/fastmatch.c
+++ head/usr.bin/grep/regex/fastmatch.c
@@ -34,7 +34,6 @@
#include <string.h>
#include "tre-fastmatch.h"
-#include "xmalloc.h"
int
tre_fixncomp(fastmatch_t *preg, const char *regex, size_t n, int cflags)
Index: head/usr.bin/grep/regex/tre-compile.c
===================================================================
--- head/usr.bin/grep/regex/tre-compile.c
+++ head/usr.bin/grep/regex/tre-compile.c
@@ -9,8 +9,6 @@
#include <string.h>
#include <wchar.h>
-#include "xmalloc.h"
-
int
tre_convert_pattern(const char *regex, size_t n, tre_char_t **w,
size_t *wn)
@@ -19,7 +17,7 @@
tre_char_t *wregex;
size_t wlen;
- wregex = xmalloc(sizeof(tre_char_t) * (n + 1));
+ wregex = malloc(sizeof(tre_char_t) * (n + 1));
if (wregex == NULL)
return REG_ESPACE;
@@ -60,13 +58,13 @@
consumed = 1;
else
{
- xfree(wregex);
+ free(wregex);
return REG_BADPAT;
}
break;
case -1:
DPRINT(("mbrtowc: error %d: %s.\n", errno, strerror(errno)));
- xfree(wregex);
+ free(wregex);
return REG_BADPAT;
case -2:
/* The last character wasn't complete. Let's not call it a
@@ -98,6 +96,6 @@
tre_free_pattern(tre_char_t *wregex)
{
#if TRE_WCHAR
- xfree(wregex);
+ free(wregex);
#endif
}
Index: head/usr.bin/grep/regex/tre-fastmatch.c
===================================================================
--- head/usr.bin/grep/regex/tre-fastmatch.c
+++ head/usr.bin/grep/regex/tre-fastmatch.c
@@ -42,7 +42,6 @@
#include "hashtable.h"
#include "tre-fastmatch.h"
-#include "xmalloc.h"
static int fastcmp(const fastmatch_t *fg, const void *data,
tre_str_type_t type);
@@ -53,9 +52,9 @@
#define FAIL_COMP(errcode) \
{ \
if (fg->pattern) \
- xfree(fg->pattern); \
+ free(fg->pattern); \
if (fg->wpattern) \
- xfree(fg->wpattern); \
+ free(fg->wpattern); \
if (fg->qsBc_table) \
hashtable_free(fg->qsBc_table); \
fg = NULL; \
@@ -92,7 +91,7 @@
if (siz == (size_t)-1) \
return REG_BADPAT; \
fg->len = siz; \
- fg->pattern = xmalloc(siz + 1); \
+ fg->pattern = malloc(siz + 1); \
if (fg->pattern == NULL) \
return REG_ESPACE; \
wcstombs(fg->pattern, fg->wpattern, siz); \
@@ -340,7 +339,7 @@
#define FILL_BMGS \
if (!fg->hasdot) \
{ \
- fg->sbmGs = xmalloc(fg->len * sizeof(int)); \
+ fg->sbmGs = malloc(fg->len * sizeof(int)); \
if (!fg->sbmGs) \
return REG_ESPACE; \
if (fg->len == 1) \
@@ -356,7 +355,7 @@
#define FILL_BMGS_WIDE \
if (!fg->hasdot) \
{ \
- fg->bmGs = xmalloc(fg->wlen * sizeof(int)); \
+ fg->bmGs = malloc(fg->wlen * sizeof(int)); \
if (!fg->bmGs) \
return REG_ESPACE; \
if (fg->wlen == 1) \
@@ -376,13 +375,13 @@
{ \
if (fg->icase) \
{ \
- wp = xmalloc(plen * sizeof(tre_char_t)); \
+ wp = malloc(plen * sizeof(tre_char_t)); \
if (wp == NULL) \
return REG_ESPACE; \
for (unsigned int i = 0; i < plen; i++) \
wp[i] = towlower(pat[i]); \
_CALC_BMGS(arr, wp, plen); \
- xfree(wp); \
+ free(wp); \
} \
else \
_CALC_BMGS(arr, pat, plen); \
@@ -391,13 +390,13 @@
{ \
if (fg->icase) \
{ \
- p = xmalloc(plen); \
+ p = malloc(plen); \
if (p == NULL) \
return REG_ESPACE; \
for (unsigned int i = 0; i < plen; i++) \
p[i] = tolower((unsigned char)pat[i]); \
_CALC_BMGS(arr, p, plen); \
- xfree(p); \
+ free(p); \
} \
else \
_CALC_BMGS(arr, pat, plen); \
@@ -408,7 +407,7 @@
{ \
int f = 0, g; \
\
- int *suff = xmalloc(plen * sizeof(int)); \
+ int *suff = malloc(plen * sizeof(int)); \
if (suff == NULL) \
return REG_ESPACE; \
\
@@ -440,7 +439,7 @@
for (unsigned int i = 0; i <= plen - 2; i++) \
arr[plen - 1 - suff[i]] = plen - 1 - i; \
\
- xfree(suff); \
+ free(suff); \
}
/*
@@ -449,7 +448,7 @@
*/
#define SAVE_PATTERN(src, srclen, dst, dstlen) \
dstlen = srclen; \
- dst = xmalloc((dstlen + 1) * sizeof(tre_char_t)); \
+ dst = malloc((dstlen + 1) * sizeof(tre_char_t)); \
if (dst == NULL) \
return REG_ESPACE; \
if (dstlen > 0) \
@@ -489,11 +488,11 @@
if (n == 0) \
{ \
fg->matchall = true; \
- fg->pattern = xmalloc(sizeof(char)); \
+ fg->pattern = malloc(sizeof(char)); \
if (!fg->pattern) \
FAIL_COMP(REG_ESPACE); \
fg->pattern[0] = '\0'; \
- fg->wpattern = xmalloc(sizeof(tre_char_t)); \
+ fg->wpattern = malloc(sizeof(tre_char_t)); \
if (!fg->wpattern) \
FAIL_COMP(REG_ESPACE); \
fg->wpattern[0] = TRE_CHAR('\0'); \
@@ -580,7 +579,7 @@
if (fg->word && (TRE_MB_CUR_MAX > 1))
return REG_BADPAT;
- tmp = xmalloc((n + 1) * sizeof(tre_char_t));
+ tmp = malloc((n + 1) * sizeof(tre_char_t));
if (tmp == NULL)
return REG_ESPACE;
@@ -631,10 +630,10 @@
if (escaped)
{
if (!_escmap)
- _escmap = xmalloc(n * sizeof(bool));
+ _escmap = malloc(n * sizeof(bool));
if (!_escmap)
{
- xfree(tmp);
+ free(tmp);
return REG_ESPACE;
}
_escmap[i] = true;
@@ -688,7 +687,7 @@
}
continue;
badpat:
- xfree(tmp);
+ free(tmp);
DPRINT(("tre_compile_fast: compilation of pattern failed, falling"
"back to NFA\n"));
return REG_BADPAT;
@@ -715,7 +714,7 @@
{
if (fg->wescmap != NULL)
{
- fg->escmap = xmalloc(fg->len * sizeof(bool));
+ fg->escmap = malloc(fg->len * sizeof(bool));
if (!fg->escmap)
{
tre_free_fast(fg);
@@ -746,7 +745,7 @@
fg->escmap = _escmap;
#endif
- xfree(tmp);
+ free(tmp);
DPRINT(("tre_compile_fast: pattern: %s, len %zu, bol %c, eol %c, "
"icase: %c, word: %c, newline %c\n", fg->pattern, fg->len,
@@ -977,16 +976,16 @@
#ifdef TRE_WCHAR
hashtable_free(fg->qsBc_table);
if (!fg->hasdot)
- xfree(fg->bmGs);
+ free(fg->bmGs);
if (fg->wescmap)
- xfree(fg->wescmap);
- xfree(fg->wpattern);
+ free(fg->wescmap);
+ free(fg->wpattern);
#endif
if (!fg->hasdot)
- xfree(fg->sbmGs);
+ free(fg->sbmGs);
if (fg->escmap)
- xfree(fg->escmap);
- xfree(fg->pattern);
+ free(fg->escmap);
+ free(fg->pattern);
}
/*
Index: head/usr.bin/grep/regex/xmalloc.h
===================================================================
--- head/usr.bin/grep/regex/xmalloc.h
+++ head/usr.bin/grep/regex/xmalloc.h
@@ -1,79 +0,0 @@
-/* $FreeBSD$ */
-
-/*
- xmalloc.h - Simple malloc debugging library API
-
- This software is released under a BSD-style license.
- See the file LICENSE for details and copyright.
-
-*/
-
-#ifndef _XMALLOC_H
-#define _XMALLOC_H 1
-
-void *xmalloc_impl(size_t size, const char *file, int line, const char *func);
-void *xcalloc_impl(size_t nmemb, size_t size, const char *file, int line,
- const char *func);
-void xfree_impl(void *ptr, const char *file, int line, const char *func);
-void *xrealloc_impl(void *ptr, size_t new_size, const char *file, int line,
- const char *func);
-int xmalloc_dump_leaks(void);
-void xmalloc_configure(int fail_after);
-
-
-#ifndef XMALLOC_INTERNAL
-#ifdef MALLOC_DEBUGGING
-
-/* Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__'
- which contains the name of the function currently being defined.
-# define __XMALLOC_FUNCTION __PRETTY_FUNCTION__
- This is broken in G++ before version 2.6.
- C9x has a similar variable called __func__, but prefer the GCC one since
- it demangles C++ function names. */
-# ifdef __GNUC__
-# if __GNUC__ > 2 || (__GNUC__ == 2 \
- && __GNUC_MINOR__ >= (defined __cplusplus ? 6 : 4))
-# define __XMALLOC_FUNCTION __PRETTY_FUNCTION__
-# else
-# define __XMALLOC_FUNCTION ((const char *) 0)
-# endif
-# else
-# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
-# define __XMALLOC_FUNCTION __func__
-# else
-# define __XMALLOC_FUNCTION ((const char *) 0)
-# endif
-# endif
-
-#define xmalloc(size) xmalloc_impl(size, __FILE__, __LINE__, \
- __XMALLOC_FUNCTION)
-#define xcalloc(nmemb, size) xcalloc_impl(nmemb, size, __FILE__, __LINE__, \
- __XMALLOC_FUNCTION)
-#define xfree(ptr) xfree_impl(ptr, __FILE__, __LINE__, __XMALLOC_FUNCTION)
-#define xrealloc(ptr, new_size) xrealloc_impl(ptr, new_size, __FILE__, \
- __LINE__, __XMALLOC_FUNCTION)
-#undef malloc
-#undef calloc
-#undef free
-#undef realloc
-
-#define malloc USE_XMALLOC_INSTEAD_OF_MALLOC
-#define calloc USE_XCALLOC_INSTEAD_OF_CALLOC
-#define free USE_XFREE_INSTEAD_OF_FREE
-#define realloc USE_XREALLOC_INSTEAD_OF_REALLOC
-
-#else /* !MALLOC_DEBUGGING */
-
-#include <stdlib.h>
-
-#define xmalloc(size) malloc(size)
-#define xcalloc(nmemb, size) calloc(nmemb, size)
-#define xfree(ptr) free(ptr)
-#define xrealloc(ptr, new_size) realloc(ptr, new_size)
-
-#endif /* !MALLOC_DEBUGGING */
-#endif /* !XMALLOC_INTERNAL */
-
-#endif /* _XMALLOC_H */
-
-/* EOF */
Index: head/usr.bin/grep/regex/xmalloc.c
===================================================================
--- head/usr.bin/grep/regex/xmalloc.c
+++ head/usr.bin/grep/regex/xmalloc.c
@@ -1,349 +0,0 @@
-/* $FreeBSD$ */
-
-/*
- xmalloc.c - Simple malloc debugging library implementation
-
- This software is released under a BSD-style license.
- See the file LICENSE for details and copyright.
-
-*/
-
-/*
- TODO:
- - red zones
- - group dumps by source location
-*/
-
-#include <stdlib.h>
-#include <assert.h>
-#include <stdio.h>
-#define XMALLOC_INTERNAL 1
-#include "xmalloc.h"
-
-
-/*
- Internal stuff.
-*/
-
-typedef struct hashTableItemRec {
- void *ptr;
- int bytes;
- const char *file;
- int line;
- const char *func;
- struct hashTableItemRec *next;
-} hashTableItem;
-
-typedef struct {
- hashTableItem **table;
-} hashTable;
-
-static int xmalloc_peak;
-static int xmalloc_current;
-static int xmalloc_peak_blocks;
-static int xmalloc_current_blocks;
-static int xmalloc_fail_after;
-
-#define TABLE_BITS 8
-#define TABLE_MASK ((1 << TABLE_BITS) - 1)
-#define TABLE_SIZE (1 << TABLE_BITS)
-
-static hashTable *
-hash_table_new(void)
-{
- hashTable *tbl;
-
- tbl = malloc(sizeof(*tbl));
-
- if (tbl != NULL)
- {
- tbl->table = calloc(TABLE_SIZE, sizeof(*tbl->table));
-
- if (tbl->table == NULL)
- {
- free(tbl);
- return NULL;
- }
- }
-
- return tbl;
-}
-
-static int
-hash_void_ptr(void *ptr)
-{
- int hash;
- int i;
-
- /* I took this hash function just off the top of my head, I have
- no idea whether it is bad or very bad. */
- hash = 0;
- for (i = 0; i < (int)sizeof(ptr)*8 / TABLE_BITS; i++)
- {
- hash ^= (unsigned long)ptr >> i*8;
- hash += i * 17;
- hash &= TABLE_MASK;
- }
- return hash;
-}
-
-static void
-hash_table_add(hashTable *tbl, void *ptr, int bytes,
- const char *file, int line, const char *func)
-{
- int i;
- hashTableItem *item, *new;
-
- i = hash_void_ptr(ptr);
-
- item = tbl->table[i];
- if (item != NULL)
- while (item->next != NULL)
- item = item->next;
-
- new = malloc(sizeof(*new));
- assert(new != NULL);
- new->ptr = ptr;
- new->bytes = bytes;
- new->file = file;
- new->line = line;
- new->func = func;
- new->next = NULL;
- if (item != NULL)
- item->next = new;
- else
- tbl->table[i] = new;
-
- xmalloc_current += bytes;
- if (xmalloc_current > xmalloc_peak)
- xmalloc_peak = xmalloc_current;
- xmalloc_current_blocks++;
- if (xmalloc_current_blocks > xmalloc_peak_blocks)
- xmalloc_peak_blocks = xmalloc_current_blocks;
-}
-
-static void
-hash_table_del(hashTable *tbl, void *ptr)
-{
- int i;
- hashTableItem *item, *prev;
-
- i = hash_void_ptr(ptr);
-
- item = tbl->table[i];
- if (item == NULL)
- {
- printf("xfree: invalid ptr %p\n", ptr);
- abort();
- }
- prev = NULL;
- while (item->ptr != ptr)
- {
- prev = item;
- item = item->next;
- }
- if (item->ptr != ptr)
- {
- printf("xfree: invalid ptr %p\n", ptr);
- abort();
- }
-
- xmalloc_current -= item->bytes;
- xmalloc_current_blocks--;
-
- if (prev != NULL)
- {
- prev->next = item->next;
- free(item);
- }
- else
- {
- tbl->table[i] = item->next;
- free(item);
- }
-}
-
-static hashTable *xmalloc_table = NULL;
-
-static void
-xmalloc_init(void)
-{
- if (xmalloc_table == NULL)
- {
- xmalloc_table = hash_table_new();
- xmalloc_peak = 0;
- xmalloc_peak_blocks = 0;
- xmalloc_current = 0;
- xmalloc_current_blocks = 0;
- xmalloc_fail_after = -1;
- }
- assert(xmalloc_table != NULL);
- assert(xmalloc_table->table != NULL);
-}
-
-
-
-/*
- Public API.
-*/
-
-void
-xmalloc_configure(int fail_after)
-{
- xmalloc_init();
- xmalloc_fail_after = fail_after;
-}
-
-int
-xmalloc_dump_leaks(void)
-{
- int i;
- int num_leaks = 0;
- int leaked_bytes = 0;
- hashTableItem *item;
-
- xmalloc_init();
-
- for (i = 0; i < TABLE_SIZE; i++)
- {
- item = xmalloc_table->table[i];
- while (item != NULL)
- {
- printf("%s:%d: %s: %d bytes at %p not freed\n",
- item->file, item->line, item->func, item->bytes, item->ptr);
- num_leaks++;
- leaked_bytes += item->bytes;
- item = item->next;
- }
- }
- if (num_leaks == 0)
- printf("No memory leaks.\n");
- else
- printf("%d unfreed memory chuncks, total %d unfreed bytes.\n",
- num_leaks, leaked_bytes);
- printf("Peak memory consumption %d bytes (%.1f kB, %.1f MB) in %d blocks ",
- xmalloc_peak, (double)xmalloc_peak / 1024,
- (double)xmalloc_peak / (1024*1024), xmalloc_peak_blocks);
- printf("(average ");
- if (xmalloc_peak_blocks)
- printf("%d", ((xmalloc_peak + xmalloc_peak_blocks / 2)
- / xmalloc_peak_blocks));
- else
- printf("N/A");
- printf(" bytes per block).\n");
-
- return num_leaks;
-}
-
-void *
-xmalloc_impl(size_t size, const char *file, int line, const char *func)
-{
- void *ptr;
-
- xmalloc_init();
- assert(size > 0);
-
- if (xmalloc_fail_after == 0)
- {
- xmalloc_fail_after = -2;
-#if 0
- printf("xmalloc: forced failure %s:%d: %s\n", file, line, func);
-#endif
- return NULL;
- }
- else if (xmalloc_fail_after == -2)
- {
- printf("xmalloc: called after failure from %s:%d: %s\n",
- file, line, func);
- assert(0);
- }
- else if (xmalloc_fail_after > 0)
- xmalloc_fail_after--;
-
- ptr = malloc(size);
- if (ptr != NULL)
- hash_table_add(xmalloc_table, ptr, (int)size, file, line, func);
- return ptr;
-}
-
-void *
-xcalloc_impl(size_t nmemb, size_t size, const char *file, int line,
- const char *func)
-{
- void *ptr;
-
- xmalloc_init();
- assert(size > 0);
-
- if (xmalloc_fail_after == 0)
- {
- xmalloc_fail_after = -2;
-#if 0
- printf("xcalloc: forced failure %s:%d: %s\n", file, line, func);
-#endif
- return NULL;
- }
- else if (xmalloc_fail_after == -2)
- {
- printf("xcalloc: called after failure from %s:%d: %s\n",
- file, line, func);
- assert(0);
- }
- else if (xmalloc_fail_after > 0)
- xmalloc_fail_after--;
-
- ptr = calloc(nmemb, size);
- if (ptr != NULL)
- hash_table_add(xmalloc_table, ptr, (int)(nmemb * size), file, line, func);
- return ptr;
-}
-
-void
-xfree_impl(void *ptr, const char *file, int line, const char *func)
-{
- /*LINTED*/(void)&file;
- /*LINTED*/(void)&line;
- /*LINTED*/(void)&func;
- xmalloc_init();
-
- if (ptr != NULL)
- hash_table_del(xmalloc_table, ptr);
- free(ptr);
-}
-
-void *
-xrealloc_impl(void *ptr, size_t new_size, const char *file, int line,
- const char *func)
-{
- void *new_ptr;
-
- xmalloc_init();
- assert(ptr != NULL);
- assert(new_size > 0);
-
- if (xmalloc_fail_after == 0)
- {
- xmalloc_fail_after = -2;
- return NULL;
- }
- else if (xmalloc_fail_after == -2)
- {
- printf("xrealloc: called after failure from %s:%d: %s\n",
- file, line, func);
- assert(0);
- }
- else if (xmalloc_fail_after > 0)
- xmalloc_fail_after--;
-
- new_ptr = realloc(ptr, new_size);
- if (new_ptr != NULL)
- {
- hash_table_del(xmalloc_table, ptr);
- hash_table_add(xmalloc_table, new_ptr, (int)new_size, file, line, func);
- }
- return new_ptr;
-}
-
-
-
-/* EOF */
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Jan 30, 1:11 PM (2 h, 31 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28101141
Default Alt Text
D10269.diff (16 KB)
Attached To
Mode
D10269: bsdgrep(1): Rip out xmalloc bits
Attached
Detach File
Event Timeline
Log In to Comment