Merge branch 'chris/malloc'

This replaces most instances of AllocVec/FreeVec in the Amiga frontend code with malloc/free, to enable OS3 to get full benefit from the clib2 slab allocator.
This commit is contained in:
Chris Young 2016-11-19 22:01:25 +00:00
commit 3ab8032f16
30 changed files with 407 additions and 401 deletions

View File

@ -42,7 +42,6 @@
#include "amiga/hotlist.h"
#include "amiga/tree.h"
#include "amiga/libs.h"
#include "amiga/memory.h"
#include "amiga/misc.h"
#include "amiga/theme.h"
@ -272,7 +271,7 @@ RXHOOKF(rx_open)
{
if(!gw) return;
dln = ami_misc_allocvec_clear(sizeof(struct dlnode), 0);
dln = calloc(1, sizeof(struct dlnode));
dln->filename = strdup((char *)cmd->ac_ArgList[3]);
dln->node.ln_Name = strdup((char *)cmd->ac_ArgList[0]);
dln->node.ln_Type = NT_USER;

View File

@ -113,7 +113,7 @@ void *amiga_bitmap_create(int width, int height, unsigned int state)
bitmap = ami_misc_itempool_alloc(pool_bitmap, sizeof(struct bitmap));
if(bitmap == NULL) return NULL;
bitmap->pixdata = ami_misc_allocvec_clear(width*height*4, 0xff);
bitmap->pixdata = ami_memory_clear_alloc(width*height*4, 0xff);
bitmap->width = width;
bitmap->height = height;
@ -170,7 +170,7 @@ void amiga_bitmap_destroy(void *bitmap)
if(bm->native_mask) FreeRaster(bm->native_mask, bm->width, bm->height);
if(bm->drawhandle) ReleaseDrawHandle(bm->drawhandle);
FreeVec(bm->pixdata);
ami_memory_clear_free(bm->pixdata);
if(bm->url) nsurl_unref(bm->url);
if(bm->title) free(bm->title);
@ -737,7 +737,7 @@ void ami_bitmap_set_icondata(struct bitmap *bm, ULONG *icondata)
void ami_bitmap_free_icondata(struct bitmap *bm)
{
if(bm->icondata) FreeVec(bm->icondata);
if(bm->icondata) free(bm->icondata);
bm->icondata = NULL;
}

View File

@ -45,7 +45,6 @@
#include "amiga/iff_cset.h"
#include "amiga/iff_dr2d.h"
#include "amiga/menu.h"
#include "amiga/memory.h"
#include "amiga/utf8.h"
#define ID_UTF8 MAKE_ID('U','T','F','8')
@ -114,10 +113,10 @@ static char *ami_clipboard_cat_collection(struct CollectionItem *ci, LONG codese
case 0:
if(ci_new) {
ci_next->ci_Next = ami_misc_allocvec_clear(sizeof(struct CollectionItem), 0);
ci_next->ci_Next = calloc(1, sizeof(struct CollectionItem));
ci_next = ci_next->ci_Next;
} else {
ci_new = ami_misc_allocvec_clear(sizeof(struct CollectionItem), 0);
ci_new = calloc(1, sizeof(struct CollectionItem));
ci_next = ci_new;
}
@ -128,10 +127,10 @@ static char *ami_clipboard_cat_collection(struct CollectionItem *ci, LONG codese
default:
if(ci_new) {
ci_next->ci_Next = ami_misc_allocvec_clear(sizeof(struct CollectionItem), 0);
ci_next->ci_Next = calloc(1, sizeof(struct CollectionItem));
ci_next = ci_next->ci_Next;
} else {
ci_new = ami_misc_allocvec_clear(sizeof(struct CollectionItem), 0);
ci_new = calloc(1, sizeof(struct CollectionItem));
ci_next = ci_new;
}
@ -166,7 +165,7 @@ static char *ami_clipboard_cat_collection(struct CollectionItem *ci, LONG codese
if(ci_new) {
free(ci_curr->ci_Data);
FreeVec(ci_curr);
free(ci_curr);
}
} while ((ci_curr = ci_next));

View File

@ -64,7 +64,6 @@
#include "amiga/file.h"
#include "amiga/iff_dr2d.h"
#include "amiga/libs.h"
#include "amiga/memory.h"
#include "amiga/misc.h"
#include "amiga/theme.h"
#include "amiga/utf8.h"
@ -101,7 +100,7 @@ static struct gui_download_window *gui_download_window_create(download_context *
char *dl_filename = ami_utf8_easy(download_context_get_filename(ctx));
APTR va[3];
dw = ami_misc_allocvec_clear(sizeof(struct gui_download_window), 0);
dw = calloc(1, sizeof(struct gui_download_window));
if(gui && (!IsListEmpty(&gui->dllist)) && (dw->dln = (struct dlnode *)FindName(&gui->dllist,url)))
{
@ -123,13 +122,13 @@ static struct gui_download_window *gui_download_window_create(download_context *
AddPart((STRPTR)&dw->fname,savereq->fr_File,1024);
if(!ami_download_check_overwrite(dw->fname, gui->shared->win, total_size))
{
FreeVec(dw);
free(dw);
return NULL;
}
}
else
{
FreeVec(dw);
free(dw);
return NULL;
}
}
@ -146,7 +145,7 @@ static struct gui_download_window *gui_download_window_create(download_context *
if(!(dw->fh = FOpen((STRPTR)&dw->fname,MODE_NEWFILE,0)))
{
FreeVec(dw);
free(dw);
return NULL;
}
@ -261,7 +260,7 @@ static void gui_download_window_done(struct gui_download_window *dw)
free(dln->filename);
Remove((struct Node *)dln);
FreeVec(dln);
free(dln);
}
FClose(dw->fh);
@ -344,7 +343,7 @@ void ami_free_download_list(struct List *dllist)
free(node->node.ln_Name);
free(node->filename);
Remove((struct Node *)node);
FreeVec((struct Node *)node);
free((struct Node *)node);
}while((node=nnode));
}

View File

@ -46,7 +46,6 @@
#include "amiga/bitmap.h"
#include "amiga/filetype.h"
#include "amiga/datatypes.h"
#include "amiga/memory.h"
#include "amiga/plotters.h"
typedef struct amiga_dt_anim_content {
@ -216,7 +215,7 @@ bool amiga_dt_anim_convert(struct content *c)
#else
#warning FIXME: Need to use a different blitter function for OS3!
#endif
FreeVec(clut);
free(clut);
adt_frame.MethodID = ADTM_UNLOADFRAME;
IDoMethodA(plugin->dto, (Msg)&adt_frame);
@ -344,7 +343,7 @@ content_type amiga_dt_anim_content_type(void)
static APTR ami_colormap_to_clut(struct ColorMap *cmap)
{
int i;
UBYTE *clut = ami_misc_allocvec_clear(256 * 4, 0); /* NB: Was not MEMF_PRIVATE */
UBYTE *clut = calloc(1, 256 * 4);
ULONG colr[256 * 4];
if(!clut) return NULL;

View File

@ -40,7 +40,6 @@
#include "amiga/filetype.h"
#include "amiga/icon.h"
#include "amiga/iff_dr2d.h"
#include "amiga/memory.h"
#include "amiga/misc.h"
#include "amiga/save_pdf.h"
#include "amiga/theme.h"
@ -90,7 +89,7 @@ void ami_file_open(struct gui_window_2 *gwin)
ASLFR_FilterFunc, &aslhookfunc,
TAG_DONE))
{
if((temp = AllocVecTagList(1024, NULL)))
if((temp = malloc(1024)))
{
strlcpy(temp, filereq->fr_Drawer, 1024);
AddPart(temp, filereq->fr_File, 1024);
@ -108,7 +107,7 @@ void ami_file_open(struct gui_window_2 *gwin)
nsurl_unref(url);
}
FreeVec(temp);
free(temp);
}
}
}
@ -213,7 +212,7 @@ void ami_file_save(int type, char *fname, struct Window *win,
void ami_file_save_req(int type, struct gui_window_2 *gwin,
struct hlcache_handle *object)
{
char *fname = AllocVecTagList(1024, NULL);
char *fname = malloc(1024);
char *initial_fname = NULL;
char *fname_with_ext = NULL;
bool strip_ext = true;
@ -224,7 +223,7 @@ void ami_file_save_req(int type, struct gui_window_2 *gwin,
}
if(initial_fname != NULL) {
fname_with_ext = AllocVecTagList(strlen(initial_fname) + 5, NULL); /* 5 = .ext\0 */
fname_with_ext = malloc(strlen(initial_fname) + 5); /* 5 = .ext\0 */
strcpy(fname_with_ext, initial_fname);
@ -261,8 +260,8 @@ void ami_file_save_req(int type, struct gui_window_2 *gwin,
ami_file_save(type, fname, gwin->win, object, gwin->gw->favicon, gwin->gw->bw);
}
if(fname) FreeVec(fname);
if(fname_with_ext) FreeVec(fname_with_ext);
if(fname) free(fname);
if(fname_with_ext) free(fname_with_ext);
}
void ami_file_req_init(void)

View File

@ -31,7 +31,6 @@
#include "utils/utils.h"
#include "amiga/filetype.h"
#include "amiga/memory.h"
#include "amiga/object.h"
/**
@ -217,7 +216,7 @@ nserror ami_mime_init(const char *mimefile)
{
if ((node = AddObject(ami_mime_list, AMINS_MIME))) {
ObjectCallback(node, ami_mime_entry_free);
mimeentry = ami_misc_allocvec_clear(sizeof(struct ami_mime_entry), 0);
mimeentry = calloc(1, sizeof(struct ami_mime_entry));
node->objstruct = mimeentry;
if(rarray[AMI_MIME_MIMETYPE])
@ -361,7 +360,7 @@ static APTR ami_mime_guess_add_datatype(struct DataType *dt, lwc_string **lwc_mi
node = AddObject(ami_mime_list, AMINS_MIME);
if(node == NULL) return NULL;
mimeentry = ami_misc_allocvec_clear(sizeof(struct ami_mime_entry), 0);
mimeentry = calloc(1, sizeof(struct ami_mime_entry));
if(mimeentry == NULL) return NULL;
node->objstruct = mimeentry;

View File

@ -363,7 +363,7 @@ static struct ami_font_cache_node *ami_font_open(const char *font, bool critical
{
LOG("Requested font not found: %s", font);
if(critical == true) amiga_warn_user("CompError", font);
FreeVec(nodedata);
free(nodedata);
return NULL;
}
@ -601,7 +601,7 @@ static inline int32 ami_font_plot_glyph(struct OutlineFont *ofont, struct RastPo
TAG_DONE);
#else
/* On OS3 the glyph needs to be in chip RAM */
void *chip_glyph = AllocVec(glyph->glm_BMModulo * glyph->glm_BMRows, MEMF_CHIP);
void *chip_glyph = ami_memory_chip_alloc(glyph->glm_BMModulo * glyph->glm_BMRows);
if(chip_glyph != NULL) {
CopyMem(glyphbm, chip_glyph, glyph->glm_BMModulo * glyph->glm_BMRows);
@ -612,7 +612,7 @@ static inline int32 ami_font_plot_glyph(struct OutlineFont *ofont, struct RastPo
y - glyph->glm_Y0 + glyph->glm_BlackTop,
glyph->glm_BlackWidth, glyph->glm_BlackHeight);
FreeVec(chip_glyph);
ami_memory_chip_free(chip_glyph);
}
#endif
}

View File

@ -158,7 +158,7 @@ struct ami_font_cache_node *ami_font_cache_alloc_entry(const char *font)
uint32 hash = XXH32(font, strlen(font), 0);
nodedata = (struct ami_font_cache_node *)InsertSkipNode(ami_font_cache_list, (APTR)hash, sizeof(struct ami_font_cache_node));
#else
nodedata = AllocVecTagList(sizeof(struct ami_font_cache_node), NULL);
nodedata = malloc(sizeof(struct ami_font_cache_node));
#endif
GetSysTime(&nodedata->lastused);

View File

@ -99,7 +99,7 @@ const char *ami_font_scan_lookup(const uint16 *code, lwc_string **glypharray)
static struct ami_font_scan_window *ami_font_scan_gui_open(int32 fonts)
{
struct ami_font_scan_window *fsw =
AllocVecTagList(sizeof(struct ami_font_scan_window), NULL);
malloc(sizeof(struct ami_font_scan_window));
if(fsw == NULL) return NULL;
@ -201,7 +201,7 @@ static void ami_font_scan_gui_close(struct ami_font_scan_window *fsw)
if(fsw) {
DisposeObject(fsw->objects[FS_OID_MAIN]);
ami_utf8_free(fsw->title);
FreeVec(fsw);
free(fsw);
}
}
@ -317,10 +317,10 @@ static ULONG ami_font_scan_list(struct MinList *list)
struct nsObject *node;
do {
if((afh = (struct AvailFontsHeader *)AllocVecTagList(afSize, NULL))) {
if((afh = (struct AvailFontsHeader *)malloc(afSize))) {
if(((afShortage = AvailFonts((STRPTR)afh, afSize,
AFF_DISK | AFF_OTAG | AFF_SCALED)))) {
FreeVec(afh);
free(afh);
afSize += afShortage;
}
} else {
@ -350,7 +350,7 @@ static ULONG ami_font_scan_list(struct MinList *list)
}
}
}
FreeVec(afh);
free(afh);
} else {
return 0;
}

View File

@ -140,8 +140,8 @@
#include "amiga/launch.h"
#include "amiga/libs.h"
#include "amiga/login.h"
#include "amiga/menu.h"
#include "amiga/memory.h"
#include "amiga/menu.h"
#include "amiga/misc.h"
#include "amiga/nsoption.h"
#include "amiga/plotters.h"
@ -1371,7 +1371,7 @@ nserror ami_gui_get_space_box(Object *obj, struct IBox **bbox)
{
#ifdef __amigaos4__
if(LIB_IS_AT_LEAST((struct Library *)SpaceBase, 53, 6)) {
*bbox = AllocVecTagList(sizeof(struct IBox), NULL);
*bbox = malloc(sizeof(struct IBox));
if(*bbox == NULL) return NSERROR_NOMEM;
GetAttr(SPACE_RenderBox, obj, (ULONG *)*bbox);
} else
@ -1388,7 +1388,7 @@ void ami_gui_free_space_box(struct IBox *bbox)
{
#ifdef __amigaos4__
if(LIB_IS_AT_LEAST((struct Library *)SpaceBase, 53, 6)) {
FreeVec(bbox);
free(bbox);
}
#endif
}
@ -1516,7 +1516,7 @@ static struct IBox *ami_ns_rect_to_ibox(struct gui_window_2 *gwin, const struct
{
struct IBox *bbox, *ibox;
ibox = AllocVecTagList(sizeof(struct IBox), NULL);
ibox = malloc(sizeof(struct IBox));
if(ibox == NULL) return NULL;
if(ami_gui_get_space_box((Object *)gwin->objects[GID_BROWSER], &bbox) != NSERROR_OK) {
@ -1537,7 +1537,7 @@ static struct IBox *ami_ns_rect_to_ibox(struct gui_window_2 *gwin, const struct
(ibox->Top > (bbox->Top + bbox->Height)) ||
(ibox->Width < 0) || (ibox->Height < 0))
{
FreeVec(ibox);
free(ibox);
ami_gui_free_space_box(bbox);
return NULL;
}
@ -2585,7 +2585,7 @@ static void ami_handle_appmsg(void)
{
if((appwinargs = &appmsg->am_ArgList[i]))
{
if((filename = AllocVecTagList(1024, NULL)))
if((filename = malloc(1024)))
{
if(appwinargs->wa_Lock)
{
@ -2666,7 +2666,7 @@ static void ami_handle_appmsg(void)
}
}
}
FreeVec(filename);
free(filename);
}
}
}
@ -3819,7 +3819,7 @@ gui_window_create(struct browser_window *bw,
if(curh > (scrn->Height - cury)) curh = scrn->Height - cury;
g = ami_misc_allocvec_clear(sizeof(struct gui_window), 0);
g = calloc(1, sizeof(struct gui_window));
if(!g)
{
@ -3893,7 +3893,7 @@ gui_window_create(struct browser_window *bw,
return g;
}
g->shared = ami_misc_allocvec_clear(sizeof(struct gui_window_2), 0);
g->shared = calloc(1, sizeof(struct gui_window_2));
if(!g->shared)
{
@ -3956,7 +3956,7 @@ gui_window_create(struct browser_window *bw,
g->shared->tabs=1;
g->shared->next_tab=1;
g->shared->svbuffer = ami_misc_allocvec_clear(2000, 0);
g->shared->svbuffer = calloc(1, 2000);
g->shared->helphints[GID_BACK] =
translate_escape_chars(messages_get("HelpToolbarBack"));
@ -4348,8 +4348,8 @@ gui_window_create(struct browser_window *bw,
if(!g->shared->win)
{
amiga_warn_user("NoMemory","");
FreeVec(g->shared);
FreeVec(g);
free(g->shared);
free(g);
return NULL;
}
@ -4529,12 +4529,12 @@ static void gui_window_destroy(struct gui_window *g)
ami_utf8_free(g->tabtitle);
FreeVec(g);
free(g);
return;
}
ami_plot_release_pens(g->shared->shared_pens);
FreeVec(g->shared->shared_pens);
free(g->shared->shared_pens);
ami_schedule_redraw_remove(g->shared);
ami_schedule(-1, ami_gui_refresh_favicon, g->shared);
@ -4564,7 +4564,7 @@ static void gui_window_destroy(struct gui_window *g)
free(g->shared->wintitle);
ami_utf8_free(g->shared->status);
FreeVec(g->shared->svbuffer);
free(g->shared->svbuffer);
for(gid = 0; gid < GID_LAST; gid++)
free(g->shared->helphints[gid]);
@ -4574,7 +4574,7 @@ static void gui_window_destroy(struct gui_window *g)
Remove(g->tab_node);
FreeClickTabNode(g->tab_node);
}
FreeVec(g); // g->shared should be freed by DelObject()
free(g); // g->shared should be freed by DelObject()
if(IsMinListEmpty(window_list))
{
@ -5266,7 +5266,7 @@ static bool gui_window_drag_start(struct gui_window *g, gui_drag_type type,
if(g->shared->ptr_lock)
{
FreeVec(g->shared->ptr_lock);
free(g->shared->ptr_lock);
g->shared->ptr_lock = NULL;
}
}
@ -5612,7 +5612,7 @@ int main(int argc, char** argv)
len += strlen(users_dir);
len += 2; /* for poss path sep and NULL term */
current_user_dir = AllocVecTagList(len, NULL);
current_user_dir = malloc(len);
if(current_user_dir == NULL) {
ami_misc_fatal_error("Failed to allocate memory");
ami_schedule_free();
@ -5729,7 +5729,7 @@ int main(int argc, char** argv)
netsurf_exit();
ami_nsoption_free();
FreeVec(current_user_dir);
free(current_user_dir);
FreeVec(current_user_faviconcache);
FreeVec(current_user);

View File

@ -176,11 +176,15 @@ extern struct Screen *scrn;
extern struct MsgPort *sport;
extern struct gui_window *cur_gw;
/* The return value for these functions must be deallocated using FreeVec() */
STRPTR ami_locale_langs(int *codeset);
char *ami_gui_get_cache_favicon_name(struct nsurl *url, bool only_if_avail);
/* Functions lacking documentation */
void ami_get_msg(void);
void ami_try_quit(void);
void ami_quit_netsurf(void);
void ami_schedule_redraw(struct gui_window_2 *gwin, bool full_redraw);
STRPTR ami_locale_langs(int *codeset);
int ami_key_to_nskey(ULONG keycode, struct InputEvent *ie);
bool ami_text_box_at_point(struct gui_window_2 *gwin, ULONG *restrict x, ULONG *restrict y);
bool ami_mouse_to_ns_coords(struct gui_window_2 *gwin, int *restrict x, int *restrict y,
@ -192,7 +196,6 @@ void ami_gui_tabs_toggle_all(void);
bool ami_locate_resource(char *fullpath, const char *file);
void ami_gui_update_hotlist_button(struct gui_window_2 *gwin);
nserror ami_gui_new_blank_tab(struct gui_window_2 *gwin);
char *ami_gui_get_cache_favicon_name(struct nsurl *url, bool only_if_avail);
int ami_gui_count_windows(int window, int *tabs);
void ami_gui_set_scale(struct gui_window *gw, float scale);

View File

@ -73,7 +73,6 @@
#include "amiga/gui_options.h"
#include "amiga/help.h"
#include "amiga/libs.h"
#include "amiga/memory.h"
#include "amiga/nsoption.h"
#include "amiga/object.h"
#include "amiga/selectmenu.h"
@ -636,7 +635,7 @@ void ami_gui_opts_open(void)
if(!gow)
{
gow = ami_misc_allocvec_clear(sizeof(struct ami_gui_opts_window), 0);
gow = calloc(1, sizeof(struct ami_gui_opts_window));
if(gow == NULL) return;
ami_gui_opts_setup(gow);
@ -2284,7 +2283,7 @@ struct List *ami_gui_opts_websearch(void)
const char *name;
int iter;
list = AllocVecTagList(sizeof(struct List), NULL);
list = malloc(sizeof(struct List));
NewList(list);
if (nsoption_charp(search_engines_file) == NULL) return list;
@ -2314,6 +2313,6 @@ void ami_gui_opts_websearch_free(struct List *websearchlist)
FreeChooserNode(node);
} while((node = nnode));
FreeVec(websearchlist);
free(websearchlist);
}

View File

@ -51,7 +51,6 @@
#include "graphics/rpattr.h"
#include "amiga/libs.h"
#include "amiga/memory.h"
#include "amiga/misc.h"
#include "amiga/object.h"
#include "amiga/plotters.h"
@ -117,8 +116,8 @@ void ami_history_open(struct gui_window *gw)
if(!gw->hw)
{
gw->hw = ami_misc_allocvec_clear(sizeof(struct history_window), 0);
gw->hw->gg = ami_misc_allocvec_clear(sizeof(struct gui_globals), 0);
gw->hw = calloc(1, sizeof(struct history_window));
gw->hw->gg = calloc(1, sizeof(struct gui_globals));
ami_init_layers(gw->hw->gg, scrn->Width, scrn->Height, false);
@ -227,7 +226,7 @@ static bool ami_history_click(struct history_window *hw, uint16 code)
void ami_history_close(struct history_window *hw)
{
ami_free_layers(hw->gg);
FreeVec(hw->gg);
free(hw->gg);
hw->gw->hw = NULL;
DisposeObject(hw->objects[OID_MAIN]);
DelObject(hw->node);

View File

@ -49,7 +49,6 @@
#include "amiga/os3support.h"
#include "amiga/bitmap.h"
#include "amiga/icon.h"
#include "amiga/memory.h"
#define THUMBNAIL_WIDTH 100 /* Icon sizes for thumbnails, usually the same as */
#define THUMBNAIL_HEIGHT 86 /* WIDTH/HEIGHT in desktop/thumbnail.c */
@ -239,7 +238,7 @@ bool amiga_icon_convert(struct content *c)
if(dobj) FreeDiskObject(dobj);
if(format==IDFMT_PALETTEMAPPED)
FreeVec(imagebufptr);
free(imagebufptr);
return true;
}
@ -326,7 +325,7 @@ static ULONG *amiga_icon_convertcolouricon32(UBYTE *icondata, ULONG width, ULONG
if (alpha==0) alpha=0xff;
argbicon = (ULONG *)AllocVecTagList(width*height*4, NULL);
argbicon = (ULONG *)malloc(width * height * 4);
if (!argbicon) return(NULL);
cmap=GetColorMap(pals1);
@ -485,8 +484,8 @@ void amiga_icon_superimpose_favicon(char *path, struct hlcache_handle *icon, cha
if(format == IDFMT_PALETTEMAPPED)
{
/* Free the 32-bit data we created */
FreeVec(icondata1);
FreeVec(icondata2);
free(icondata1);
free(icondata2);
}
}
@ -501,7 +500,7 @@ struct DiskObject *amiga_icon_from_bitmap(struct bitmap *bm)
{
bitmap = ami_bitmap_get_native(bm, THUMBNAIL_WIDTH,
THUMBNAIL_HEIGHT, NULL);
icondata = AllocVecTagList(THUMBNAIL_WIDTH * 4 * THUMBNAIL_HEIGHT, NULL);
icondata = malloc(THUMBNAIL_WIDTH * 4 * THUMBNAIL_HEIGHT);
ami_bitmap_set_icondata(bm, icondata);
if(bitmap) {

View File

@ -19,6 +19,7 @@
#ifdef WITH_NS_SVG
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
#include <svgtiny.h>
#include <proto/exec.h>
@ -30,11 +31,9 @@
#include "netsurf/content.h"
#include "amiga/os3support.h"
#include "amiga/iff_dr2d.h"
#include "amiga/memory.h"
#else
#include "os3support.h"
#include "iff_dr2d.h"
#include "misc.h"
#endif
static struct ColorRegister cm[1000];
@ -171,7 +170,7 @@ bool ami_svg_to_dr2d(struct IFFHandle *iffh, const char *buffer,
}
for (unsigned int i = 0; i != diagram->shape_count; i++) {
attr = ami_misc_allocvec_clear(sizeof(struct attr_struct), 0);
attr = calloc(1, sizeof(struct attr_struct));
if (diagram->shape[i].fill == svgtiny_TRANSPARENT)
attr->FillType = FT_NONE;
else
@ -193,7 +192,7 @@ bool ami_svg_to_dr2d(struct IFFHandle *iffh, const char *buffer,
WriteChunkBytes(iffh,attr,14);
PopChunk(iffh);
}
FreeVec(attr);
free(attr);
if (diagram->shape[i].path) {
union {
@ -272,30 +271,30 @@ bool ami_svg_to_dr2d(struct IFFHandle *iffh, const char *buffer,
PopChunk(iffh);
}
} else if (diagram->shape[i].text) {
stxt = ami_misc_allocvec_clear(sizeof(struct stxt_struct), 0);
stxt = calloc(1, sizeof(struct stxt_struct));
stxt->BaseX = diagram->shape[i].text_x;
stxt->BaseY = diagram->shape[i].text_y;
stxt->NumChars = strlen(diagram->shape[i].text);
if(!fons_written)
{
fons = ami_misc_allocvec_clear(sizeof(struct fons_struct), 0);
if(!(PushChunk(iffh,0,ID_FONS,IFFSIZE_UNKNOWN)))
fons = calloc(1, sizeof(struct fons_struct));
if(!(PushChunk(iffh, 0, ID_FONS, IFFSIZE_UNKNOWN)))
{
WriteChunkBytes(iffh, fons, sizeof(struct fons_struct));
WriteChunkBytes(iffh, "Topaz\0", 6);
PopChunk(iffh);
}
FreeVec(fons);
free(fons);
fons_written = TRUE;
}
if(!(PushChunk(iffh,0,ID_STXT,IFFSIZE_UNKNOWN)))
if(!(PushChunk(iffh, 0, ID_STXT, IFFSIZE_UNKNOWN)))
{
WriteChunkBytes(iffh,stxt,26);
WriteChunkBytes(iffh,diagram->shape[i].text,strlen(diagram->shape[i].text));
WriteChunkBytes(iffh, stxt, 26);
WriteChunkBytes(iffh, diagram->shape[i].text, strlen(diagram->shape[i].text));
PopChunk(iffh);
}
FreeVec(stxt);
free(stxt);
}
}
@ -380,7 +379,7 @@ int main(int argc, char **argv)
{
size = GetFileSize(fh);
buffer = AllocVecTagList((uint32_t)size, NULL);
buffer = malloc((uint32_t)size);
Read(fh,buffer,(uint32_t)size);
Close(fh);
@ -404,7 +403,7 @@ int main(int argc, char **argv)
ami_svg_to_dr2d(iffh,buffer,size,(char *)rarray[A_SVG]);
FreeVec(buffer);
free(buffer);
if(iffh) CloseIFF(iffh);
if(iffh->iff_Stream) Close((BPTR)iffh->iff_Stream);
if(iffh) FreeIFF(iffh);

View File

@ -50,10 +50,10 @@ static struct ami_protocol *ami_openurl_add_protocol(const char *url)
{
nsurl *ns_url;
struct ami_protocol *ami_p =
(struct ami_protocol *)AllocVecTagList(sizeof(struct ami_protocol), NULL);
(struct ami_protocol *)malloc(sizeof(struct ami_protocol));
if (nsurl_create(url, &ns_url) != NSERROR_OK) {
FreeVec(ami_p);
free(ami_p);
return NULL;
}
@ -61,7 +61,7 @@ static struct ami_protocol *ami_openurl_add_protocol(const char *url)
nsurl_unref(ns_url);
if (ami_p->protocol == NULL)
{
FreeVec(ami_p);
free(ami_p);
return NULL;
}
@ -83,11 +83,11 @@ static void ami_openurl_free_list(struct MinList *list)
Remove((struct Node *)node);
if (node->protocol) lwc_string_unref(node->protocol);
FreeVec(node);
free(node);
node = NULL;
}while((node=nnode));
FreeVec(list);
free(list);
}
static BOOL ami_openurl_check_list(struct MinList *list, nsurl *url)

View File

@ -46,7 +46,6 @@
#include "amiga/gui.h"
#include "amiga/libs.h"
#include "amiga/memory.h"
#include "amiga/object.h"
#include "amiga/login.h"
@ -67,7 +66,7 @@ void gui_401login_open(nsurl *url, const char *realm,
nserror (*cb)(bool proceed, void *pw), void *cbpw)
{
const char *auth;
struct gui_login_window *lw = ami_misc_allocvec_clear(sizeof(struct gui_login_window), 0);
struct gui_login_window *lw = calloc(1, sizeof(struct gui_login_window));
lwc_string *host = nsurl_get_component(url, NSURL_HOST);
assert(host != NULL);

View File

@ -25,17 +25,28 @@
ULONG __slab_max_size = 8192; /* Enable clib2's slab allocator */
#endif
void *ami_misc_allocvec_clear(int size, UBYTE value)
/* Special clear (ie. non-zero), which is different on OS3 and 4 */
void *ami_memory_clear_alloc(size_t size, UBYTE value)
{
#ifdef __amigaos4__
return AllocVecTags(size, AVT_ClearWithValue, value, TAG_DONE);
#else
void *mem = AllocVec(size, MEMF_ANY);
void *mem = malloc(size);
if (mem) memset(mem, value, size);
return mem;
#endif
}
/* Free special clear (ie. non-zero) area, which is different on OS3 and 4 */
void ami_memory_clear_free(void *p)
{
#ifdef __amigaos4__
FreeVec(p);
#else
free(p);
#endif
}
APTR ami_misc_itempool_create(int size)
{
#ifdef __amigaos4__

View File

@ -21,8 +21,18 @@
#include <exec/types.h>
/* Standard memory allocation */
void *ami_misc_allocvec_clear(int size, UBYTE value);
/* Alloc/free chip memory */
#ifdef __amigaos4__
#define ami_memory_chip_alloc(s) malloc(s)
#define ami_memory_chip_free(p) free(p)
#else
#define ami_memory_chip_alloc(s) AllocVec(s, MEMF_CHIP)
#define ami_memory_chip_free(p) FreeVec(p)
#endif
/* Alloc/free a block cleared to non-zero */
void *ami_memory_clear_alloc(size_t size, UBYTE value);
void ami_memory_clear_free(void *p);
/* Itempool cross-compatibility */
APTR ami_misc_itempool_create(int size);

View File

@ -68,7 +68,6 @@
#include "amiga/hotlist.h"
#include "amiga/libs.h"
#include "amiga/menu.h"
#include "amiga/memory.h"
#include "amiga/misc.h"
#include "amiga/nsoption.h"
#include "amiga/print.h"
@ -504,11 +503,11 @@ HOOKF(void, ami_menu_item_arexx_execute, APTR, window, struct IntuiMessage *)
ASLFR_InitialDrawer, nsoption_charp(arexx_dir),
ASLFR_InitialPattern, "#?.nsrx",
TAG_DONE)) {
if((temp = AllocVecTagList(1024, NULL))) {
if((temp = malloc(1024))) {
strlcpy(temp, filereq->fr_Drawer, 1024);
AddPart(temp, filereq->fr_File, 1024);
ami_arexx_execute(temp);
FreeVec(temp);
free(temp);
}
}
}
@ -521,13 +520,13 @@ HOOKF(void, ami_menu_item_arexx_entries, APTR, window, struct IntuiMessage *)
GetAttr(WINDOW_UserData, (Object *)window, (ULONG *)&gwin);
if(script) {
if((temp = AllocVecTagList(1024, NULL))) {
if((temp = malloc(1024))) {
BPTR lock;
if((lock = Lock(nsoption_charp(arexx_dir), SHARED_LOCK))) {
DevNameFromLock(lock, temp, 1024, DN_FULLPATH);
AddPart(temp, script, 1024);
ami_arexx_execute(temp);
FreeVec(temp);
free(temp);
UnLock(lock);
}
}
@ -560,7 +559,7 @@ void ami_free_menulabs(struct gui_window_2 *gwin)
gwin->menukey[i] = 0;
}
FreeVec(gwin->menutype);
free(gwin->menutype);
gwin->menutype = NULL;
}
@ -609,7 +608,7 @@ static void ami_init_menulabs(struct gui_window_2 *gwin)
{
int i;
gwin->menutype = ami_misc_allocvec_clear(sizeof(UBYTE) * (AMI_MENU_AREXX_MAX + 1), 0);
gwin->menutype = calloc(1, sizeof(UBYTE) * (AMI_MENU_AREXX_MAX + 1));
for(i=0;i <= AMI_MENU_AREXX_MAX;i++)
{
@ -936,7 +935,7 @@ void ami_menu_free(struct gui_window_2 *gwin)
struct Menu *ami_menu_create(struct gui_window_2 *gwin)
{
gwin->menu = ami_misc_allocvec_clear(sizeof(struct NewMenu) * (AMI_MENU_AREXX_MAX + 1), 0);
gwin->menu = calloc(1, sizeof(struct NewMenu) * (AMI_MENU_AREXX_MAX + 1));
ami_init_menulabs(gwin);
ami_menu_scan(ami_tree_get_tree(hotlist_window), gwin);
ami_menu_arexx_scan(gwin);
@ -959,7 +958,7 @@ struct Menu *ami_menu_create(struct gui_window_2 *gwin)
gwin->imenu = CreateMenus(gwin->menu, TAG_DONE);
LayoutMenus(gwin->imenu, gwin->vi,
GTMN_NewLookMenus, TRUE, TAG_DONE);
FreeVec(gwin->menu); /**\todo this should be local to this function */
free(gwin->menu); /**\todo this should be local to this function */
gwin->menu = NULL;
return gwin->imenu;
@ -978,7 +977,7 @@ void ami_menu_arexx_scan(struct gui_window_2 *gwin)
char *menu_lab;
if((lock = Lock(nsoption_charp(arexx_dir), SHARED_LOCK))) {
if((buffer = AllocVecTagList(1024, NULL))) {
if((buffer = malloc(1024))) {
if((ctrl = AllocDosObject(DOS_EXALLCONTROL,NULL))) {
ctrl->eac_LastKey = 0;
@ -1009,7 +1008,7 @@ void ami_menu_arexx_scan(struct gui_window_2 *gwin)
} while(cont);
FreeDosObject(DOS_EXALLCONTROL,ctrl);
}
FreeVec(buffer);
free(buffer);
}
UnLock(lock);
}

View File

@ -62,7 +62,7 @@ static void ami_NewMinList(struct MinList *list)
/* Allocate and initialise a new MinList */
struct MinList *ami_AllocMinList(void)
{
struct MinList *objlist = (struct MinList *)AllocVecTagList(sizeof(struct nsList), NULL);
struct MinList *objlist = (struct MinList *)malloc(sizeof(struct nsList));
if(objlist == NULL) return NULL;
ami_NewMinList(objlist);
return objlist;
@ -98,7 +98,7 @@ static void DelObjectInternal(struct nsObject *dtzo, BOOL free_obj)
{
Remove((struct Node *)dtzo);
if(dtzo->callback != NULL) dtzo->callback(dtzo->objstruct);
if(dtzo->objstruct && free_obj) FreeVec(dtzo->objstruct);
if(dtzo->objstruct && free_obj) free(dtzo->objstruct);
if(dtzo->dtz_Node.ln_Name) free(dtzo->dtz_Node.ln_Name);
ami_misc_itempool_free(pool_nsobj, dtzo, sizeof(struct nsObject));
dtzo = NULL;
@ -131,6 +131,6 @@ void FreeObjList(struct MinList *objlist)
}
} while((node=nnode));
FreeVec(objlist);
free(objlist);
}

View File

@ -46,241 +46,6 @@
#define FAILURE (FALSE)
#define NO !
/* Diskfont */
struct OutlineFont *OpenOutlineFont(STRPTR fileName, struct List *list, ULONG flags)
{
BPTR fh = 0;
int64 size = 0;
struct TagItem *ti;
UBYTE *buffer;
STRPTR fname, otagpath, fontpath;
struct BulletBase *BulletBase;
struct OutlineFont *of = NULL;
struct GlyphEngine *gengine;
char *p = 0;
struct FontContentsHeader fch;
if((p = strrchr(fileName, '.')))
*p = '\0';
fontpath = (STRPTR)ASPrintf("FONTS:%s.font", fileName);
fh = Open(fontpath, MODE_OLDFILE);
if(fh == 0) {
LOG("Unable to open FONT %s", fontpath);
FreeVec(fontpath);
return NULL;
}
if(Read(fh, &fch, sizeof(struct FontContentsHeader)) != sizeof(struct FontContentsHeader)) {
LOG("Unable to read FONT %s", fontpath);
FreeVec(fontpath);
Close(fh);
return NULL;
}
Close(fh);
if(fch.fch_FileID != OFCH_ID) {
LOG("%s is not an outline font!", fontpath);
FreeVec(fontpath);
return NULL;
}
otagpath = (STRPTR)ASPrintf("FONTS:%s.otag", fileName);
fh = Open(otagpath, MODE_OLDFILE);
if(p) *p = '.';
if(fh == 0) {
LOG("Unable to open OTAG %s", otagpath);
FreeVec(otagpath);
return NULL;
}
size = GetFileSize(fh);
buffer = (UBYTE *)AllocVec(size, MEMF_ANY);
if(buffer == NULL) {
LOG("Unable to allocate memory");
Close(fh);
FreeVec(otagpath);
return NULL;
}
Read(fh, buffer, size);
Close(fh);
/* The first tag is supposed to be OT_FileIdent and should equal 'size' */
struct TagItem *tag = (struct TagItem *)buffer;
if((tag->ti_Tag != OT_FileIdent) || (tag->ti_Data != (ULONG)size)) {
LOG("Invalid OTAG file");
FreeVec(buffer);
FreeVec(otagpath);
return NULL;
}
/* Relocate all the OT_Indirect tags */
while((ti = NextTagItem(&tag))) {
if(ti->ti_Tag & OT_Indirect) {
ti->ti_Data += (ULONG)buffer;
}
}
/* Find OT_Engine and open the font engine */
if(ti = FindTagItem(OT_Engine, buffer)) {
LOG("Using font engine %s", ti->ti_Data);
fname = ASPrintf("%s.library", ti->ti_Data);
} else {
LOG("Cannot find OT_Engine tag");
FreeVec(buffer);
FreeVec(otagpath);
return NULL;
}
BulletBase = (struct BulletBase *)OpenLibrary(fname, 0L);
if(BulletBase == NULL) {
LOG("Unable to open font engine %s", fname);
FreeVec(buffer);
FreeVec(fname);
FreeVec(otagpath);
}
FreeVec(fname);
gengine = OpenEngine();
SetInfo(gengine,
OT_OTagPath, (ULONG)otagpath,
OT_OTagList, (ULONG)buffer,
TAG_DONE);
of = AllocVec(sizeof(struct OutlineFont), MEMF_CLEAR);
if(of == NULL) return NULL;
of->BulletBase = BulletBase;
of->GEngine = gengine;
of->OTagPath = otagpath;
of->olf_OTagList = buffer;
return of;
}
void CloseOutlineFont(struct OutlineFont *of, struct List *list)
{
struct BulletBase *BulletBase = of->BulletBase;
CloseEngine(of->GEngine);
CloseLibrary((struct Library *)BulletBase);
FreeVec(of->OTagPath);
FreeVec(of->olf_OTagList);
FreeVec(of);
}
/* DOS */
int64 GetFileSize(BPTR fh)
{
int32 size = 0;
struct FileInfoBlock *fib = AllocVec(sizeof(struct FileInfoBlock), MEMF_ANY);
if(fib == NULL) return 0;
ExamineFH(fh, fib);
size = fib->fib_Size;
FreeVec(fib);
return (int64)size;
}
void FreeSysObject(ULONG type, APTR obj)
{
switch(type) {
case ASOT_PORT:
DeleteMsgPort(obj);
break;
case ASOT_IOREQUEST:
DeleteIORequest(obj);
break;
}
}
/* Exec */
struct Node *GetHead(struct List *list)
{
struct Node *res = NULL;
if ((NULL != list) && (NULL != list->lh_Head->ln_Succ))
{
res = list->lh_Head;
}
return res;
}
struct Node *GetPred(struct Node *node)
{
if (node->ln_Pred->ln_Pred == NULL) return NULL;
return node->ln_Pred;
}
struct Node *GetSucc(struct Node *node)
{
if (node->ln_Succ->ln_Succ == NULL) return NULL;
return node->ln_Succ;
}
/* Intuition */
uint32 GetAttrs(Object *obj, Tag tag1, ...)
{
va_list ap;
Tag tag = tag1;
ULONG data = 0;
int i = 0;
va_start(ap, tag1);
while(tag != TAG_DONE) {
data = va_arg(ap, ULONG);
i += GetAttr(tag, obj, (void *)data);
tag = va_arg(ap, Tag);
}
va_end(ap);
return i;
}
ULONG RefreshSetGadgetAttrsA(struct Gadget *g, struct Window *w, struct Requester *r, struct TagItem *tags)
{
ULONG retval;
BOOL changedisabled = FALSE;
BOOL disabled;
if (w) {
if (FindTagItem(GA_Disabled,tags)) {
changedisabled = TRUE;
disabled = g->Flags & GFLG_DISABLED;
}
}
retval = SetGadgetAttrsA(g,w,r,tags);
if (w && (retval || (changedisabled && disabled != (g->Flags & GFLG_DISABLED)))) {
RefreshGList(g,w,r,1);
retval = 1;
}
return retval;
}
ULONG RefreshSetGadgetAttrs(struct Gadget *g, struct Window *w, struct Requester *r, Tag tag1, ...)
{
return RefreshSetGadgetAttrsA(g,w,r,(struct TagItem *) &tag1);
}
APTR NewObject(struct IClass * classPtr, CONST_STRPTR classID, ULONG tagList, ...)
{
return NewObjectA(classPtr, classID, (const struct TagItem *) &tagList);
}
/* Utility */
struct FormatContext
{
@ -430,5 +195,239 @@ long long int strtoll(const char *nptr, char **endptr, int base)
return (long long int)strtol(nptr, endptr, base);
}
/* Diskfont */
struct OutlineFont *OpenOutlineFont(STRPTR fileName, struct List *list, ULONG flags)
{
BPTR fh = 0;
int64 size = 0;
struct TagItem *ti;
UBYTE *buffer;
STRPTR fname, otagpath, fontpath;
struct BulletBase *BulletBase;
struct OutlineFont *of = NULL;
struct GlyphEngine *gengine;
char *p = 0;
struct FontContentsHeader fch;
if((p = strrchr(fileName, '.')))
*p = '\0';
fontpath = (STRPTR)ASPrintf("FONTS:%s.font", fileName);
fh = Open(fontpath, MODE_OLDFILE);
if(fh == 0) {
LOG("Unable to open FONT %s", fontpath);
FreeVec(fontpath);
return NULL;
}
if(Read(fh, &fch, sizeof(struct FontContentsHeader)) != sizeof(struct FontContentsHeader)) {
LOG("Unable to read FONT %s", fontpath);
FreeVec(fontpath);
Close(fh);
return NULL;
}
Close(fh);
if(fch.fch_FileID != OFCH_ID) {
LOG("%s is not an outline font!", fontpath);
FreeVec(fontpath);
return NULL;
}
otagpath = (STRPTR)ASPrintf("FONTS:%s.otag", fileName);
fh = Open(otagpath, MODE_OLDFILE);
if(p) *p = '.';
if(fh == 0) {
LOG("Unable to open OTAG %s", otagpath);
FreeVec(otagpath);
return NULL;
}
size = GetFileSize(fh);
buffer = (UBYTE *)malloc(size);
if(buffer == NULL) {
LOG("Unable to allocate memory");
Close(fh);
FreeVec(otagpath);
return NULL;
}
Read(fh, buffer, size);
Close(fh);
/* The first tag is supposed to be OT_FileIdent and should equal 'size' */
struct TagItem *tag = (struct TagItem *)buffer;
if((tag->ti_Tag != OT_FileIdent) || (tag->ti_Data != (ULONG)size)) {
LOG("Invalid OTAG file");
free(buffer);
FreeVec(otagpath);
return NULL;
}
/* Relocate all the OT_Indirect tags */
while((ti = NextTagItem(&tag))) {
if(ti->ti_Tag & OT_Indirect) {
ti->ti_Data += (ULONG)buffer;
}
}
/* Find OT_Engine and open the font engine */
if(ti = FindTagItem(OT_Engine, buffer)) {
LOG("Using font engine %s", ti->ti_Data);
fname = ASPrintf("%s.library", ti->ti_Data);
} else {
LOG("Cannot find OT_Engine tag");
free(buffer);
FreeVec(otagpath);
return NULL;
}
BulletBase = (struct BulletBase *)OpenLibrary(fname, 0L);
if(BulletBase == NULL) {
LOG("Unable to open font engine %s", fname);
free(buffer);
FreeVec(fname);
FreeVec(otagpath);
}
FreeVec(fname);
gengine = OpenEngine();
SetInfo(gengine,
OT_OTagPath, (ULONG)otagpath,
OT_OTagList, (ULONG)buffer,
TAG_DONE);
of = calloc(1, sizeof(struct OutlineFont));
if(of == NULL) return NULL;
of->BulletBase = BulletBase;
of->GEngine = gengine;
of->OTagPath = otagpath;
of->olf_OTagList = buffer;
return of;
}
void CloseOutlineFont(struct OutlineFont *of, struct List *list)
{
struct BulletBase *BulletBase = of->BulletBase;
CloseEngine(of->GEngine);
CloseLibrary((struct Library *)BulletBase);
FreeVec(of->OTagPath);
free(of->olf_OTagList);
free(of);
}
/* DOS */
int64 GetFileSize(BPTR fh)
{
int32 size = 0;
struct FileInfoBlock *fib = malloc(sizeof(struct FileInfoBlock));
if(fib == NULL) return 0;
ExamineFH(fh, fib);
size = fib->fib_Size;
free(fib);
return (int64)size;
}
void FreeSysObject(ULONG type, APTR obj)
{
switch(type) {
case ASOT_PORT:
DeleteMsgPort(obj);
break;
case ASOT_IOREQUEST:
DeleteIORequest(obj);
break;
}
}
/* Exec */
struct Node *GetHead(struct List *list)
{
struct Node *res = NULL;
if ((NULL != list) && (NULL != list->lh_Head->ln_Succ))
{
res = list->lh_Head;
}
return res;
}
struct Node *GetPred(struct Node *node)
{
if (node->ln_Pred->ln_Pred == NULL) return NULL;
return node->ln_Pred;
}
struct Node *GetSucc(struct Node *node)
{
if (node->ln_Succ->ln_Succ == NULL) return NULL;
return node->ln_Succ;
}
/* Intuition */
uint32 GetAttrs(Object *obj, Tag tag1, ...)
{
va_list ap;
Tag tag = tag1;
ULONG data = 0;
int i = 0;
va_start(ap, tag1);
while(tag != TAG_DONE) {
data = va_arg(ap, ULONG);
i += GetAttr(tag, obj, (void *)data);
tag = va_arg(ap, Tag);
}
va_end(ap);
return i;
}
ULONG RefreshSetGadgetAttrsA(struct Gadget *g, struct Window *w, struct Requester *r, struct TagItem *tags)
{
ULONG retval;
BOOL changedisabled = FALSE;
BOOL disabled;
if (w) {
if (FindTagItem(GA_Disabled,tags)) {
changedisabled = TRUE;
disabled = g->Flags & GFLG_DISABLED;
}
}
retval = SetGadgetAttrsA(g,w,r,tags);
if (w && (retval || (changedisabled && disabled != (g->Flags & GFLG_DISABLED)))) {
RefreshGList(g,w,r,1);
retval = 1;
}
return retval;
}
ULONG RefreshSetGadgetAttrs(struct Gadget *g, struct Window *w, struct Requester *r, Tag tag1, ...)
{
return RefreshSetGadgetAttrsA(g,w,r,(struct TagItem *) &tag1);
}
APTR NewObject(struct IClass * classPtr, CONST_STRPTR classID, ULONG tagList, ...)
{
return NewObjectA(classPtr, classID, (const struct TagItem *) &tagList);
}
#endif

View File

@ -152,7 +152,6 @@
#define DevNameFromLock(A,B,C,D) NameFromLock(A,B,C)
/* Exec */
#define AllocVecTagList(SZ,TAG) AllocVec(SZ,MEMF_ANY) /* AllocVecTagList with no tags */
#define FindIName FindName
/* Intuition */

View File

@ -33,6 +33,7 @@
#include <math.h>
#include <assert.h>
#include <stdlib.h>
#include "utils/nsoption.h"
#include "utils/utils.h"
@ -146,14 +147,10 @@ void ami_init_layers(struct gui_globals *gg, ULONG width, ULONG height, bool for
gg->height = height;
gg->layerinfo = NewLayerInfo();
gg->areabuf = AllocVecTagList(AREA_SIZE, NULL);
gg->areabuf = malloc(AREA_SIZE);
#ifdef __amigaos4__
gg->tmprasbuf = AllocVecTagList(width * height, NULL);
#else
/* OS3/AGA requires this to be in chip mem. RTG would probably rather it wasn't. */
gg->tmprasbuf = AllocVec(width * height, MEMF_CHIP);
#endif
gg->tmprasbuf = ami_memory_chip_alloc(width * height);
if(gg->palette_mapped == true) {
gg->bm = AllocBitMap(width, height, depth, 0, friend);
@ -172,7 +169,7 @@ void ami_init_layers(struct gui_globals *gg, ULONG width, ULONG height, bool for
if(!gg->bm) amiga_warn_user("NoMemory","");
gg->rp = AllocVecTagList(sizeof(struct RastPort), NULL);
gg->rp = malloc(sizeof(struct RastPort));
if(!gg->rp) amiga_warn_user("NoMemory","");
InitRastPort(gg->rp);
@ -185,12 +182,12 @@ void ami_init_layers(struct gui_globals *gg, ULONG width, ULONG height, bool for
InstallLayerHook(gg->rp->Layer,LAYERS_NOBACKFILL);
gg->rp->AreaInfo = AllocVecTagList(sizeof(struct AreaInfo), NULL);
gg->rp->AreaInfo = malloc(sizeof(struct AreaInfo));
if((!gg->areabuf) || (!gg->rp->AreaInfo)) amiga_warn_user("NoMemory","");
InitArea(gg->rp->AreaInfo,gg->areabuf, AREA_SIZE/5);
InitArea(gg->rp->AreaInfo, gg->areabuf, AREA_SIZE/5);
gg->rp->TmpRas = AllocVecTagList(sizeof(struct TmpRas), NULL);
gg->rp->TmpRas = malloc(sizeof(struct TmpRas));
if((!gg->tmprasbuf) || (!gg->rp->TmpRas)) amiga_warn_user("NoMemory","");
InitTmpRas(gg->rp->TmpRas, gg->tmprasbuf, width*height);
@ -219,13 +216,13 @@ void ami_free_layers(struct gui_globals *gg)
if(gg->rp) {
DeleteLayer(0,gg->rp->Layer);
FreeVec(gg->rp->TmpRas);
FreeVec(gg->rp->AreaInfo);
FreeVec(gg->rp);
free(gg->rp->TmpRas);
free(gg->rp->AreaInfo);
free(gg->rp);
}
FreeVec(gg->tmprasbuf);
FreeVec(gg->areabuf);
ami_memory_chip_free(gg->tmprasbuf);
free(gg->areabuf);
DisposeLayerInfo(gg->layerinfo);
if(gg->palette_mapped == false) {
if(gg->bm) ami_rtg_freebitmap(gg->bm);
@ -713,7 +710,7 @@ static bool ami_bitmap_tile(int x, int y, int width, int height,
bfbm.offsetx = ox;
bfbm.offsety = oy;
bfbm.mask = ami_bitmap_get_mask(bitmap, width, height, tbm);
bfh = ami_misc_allocvec_clear(sizeof(struct Hook), 0); /* NB: Was not MEMF_PRIVATE */
bfh = calloc(1, sizeof(struct Hook));
bfh->h_Entry = (HOOKFUNC)ami_bitmap_tile_hook;
bfh->h_SubEntry = 0;
bfh->h_Data = &bfbm;
@ -727,7 +724,7 @@ static bool ami_bitmap_tile(int x, int y, int width, int height,
if(amiga_bitmap_get_opaque(bitmap)) DeleteBackFillHook(bfh);
else
#endif
FreeVec(bfh);
free(bfh);
if((ami_bitmap_is_nativebm(bitmap, tbm) == false)) {
/**\todo is this logic logical? */

View File

@ -62,7 +62,6 @@
#include "amiga/font.h"
#include "amiga/gui.h"
#include "amiga/libs.h"
#include "amiga/memory.h"
#include "amiga/misc.h"
#include "amiga/print.h"
#include "amiga/utf8.h"
@ -134,11 +133,11 @@ static void ami_print_ui_free(void)
int i;
for(i = 0; i < PGID_LAST; i++) {
if(gadlab[i]) FreeVec((APTR)gadlab[i]);
if(gadlab[i]) free((APTR)gadlab[i]);
}
for(i = 0; i < 10; i++) {
if(printers[i]) FreeVec(printers[i]);
if(printers[i]) free(printers[i]);
}
}
@ -228,21 +227,21 @@ void ami_print_ui(struct hlcache_handle *c)
char filename[30];
int i;
struct ami_print_window *pw = ami_misc_allocvec_clear(sizeof(struct ami_print_window), 0);
struct ami_print_window *pw = calloc(1, sizeof(struct ami_print_window));
pw->c = c;
printers[0] = ami_misc_allocvec_clear(50, 0);
printers[0] = calloc(1, 50);
ami_print_readunit("ENV:Sys/printer.prefs", printers[0], 50, 0);
strcpy(filename,"ENV:Sys/printerN.prefs");
for (i = 1; i < 10; i++)
{
filename[15] = '0' + i;
printers[i] = AllocVecTagList(50, NULL);
printers[i] = malloc(50);
if(!ami_print_readunit(filename, printers[i], 50, i))
{
FreeVec(printers[i]);
free(printers[i]);
printers[i] = NULL;
break;
}
@ -483,7 +482,7 @@ struct MsgPort *ami_print_get_msgport(void)
bool ami_print_begin(struct print_settings *ps)
{
ami_print_info.gg = ami_misc_allocvec_clear(sizeof(struct gui_globals), 0);
ami_print_info.gg = calloc(1, sizeof(struct gui_globals));
if(!ami_print_info.gg) return false;
ami_init_layers(ami_print_info.gg,
@ -510,7 +509,7 @@ bool ami_print_next_page(void)
void ami_print_end(void)
{
ami_free_layers(ami_print_info.gg);
FreeVec(ami_print_info.gg);
free(ami_print_info.gg);
DisposeObject(ami_print_info.objects[OID_MAIN]);
ami_gui_set_default_gg();

View File

@ -27,6 +27,7 @@
#include "utils/config.h"
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <proto/intuition.h>
#include <proto/exec.h>
@ -122,7 +123,7 @@ void ami_search_open(struct gui_window *gwin)
return;
}
fwin = ami_misc_allocvec_clear(sizeof(struct find_window), 0);
fwin = calloc(1, sizeof(struct find_window));
fwin->objects[OID_MAIN] = WindowObj,
WA_ScreenTitle, ami_gui_get_screen_title(),

View File

@ -49,7 +49,7 @@
#include "amiga/bitmap.h"
#include "amiga/schedule.h"
#include "amiga/theme.h"
#include "amiga/memory.h"
#include "amiga/misc.h"
static struct BitMap *throbber = NULL;
static struct bitmap *throbber_nsbm = NULL;
@ -363,13 +363,13 @@ void ami_init_mouse_pointers(void)
if((ptrfile = Open(ptrfname,MODE_OLDFILE)))
{
int mx,my;
UBYTE *pprefsbuf = AllocVecTagList(1061, NULL);
Read(ptrfile,pprefsbuf,1061);
UBYTE *pprefsbuf = malloc(1061);
Read(ptrfile, pprefsbuf, 1061);
mouseptrbm[i]=AllocVecTagList(sizeof(struct BitMap), NULL);
InitBitMap(mouseptrbm[i],2,32,32);
mouseptrbm[i]->Planes[0] = AllocRaster(32,32);
mouseptrbm[i]->Planes[1] = AllocRaster(32,32);
mouseptrbm[i] = malloc(sizeof(struct BitMap));
InitBitMap(mouseptrbm[i], 2, 32, 32);
mouseptrbm[i]->Planes[0] = AllocRaster(32, 32);
mouseptrbm[i]->Planes[1] = AllocRaster(32, 32);
mouseptr.BitMap = mouseptrbm[i];
for(my=0;my<32;my++)
@ -393,7 +393,7 @@ void ami_init_mouse_pointers(void)
POINTERA_YResolution,POINTERYRESN_SCREENRESASPECT,
TAG_DONE);
FreeVec(pprefsbuf);
free(pprefsbuf);
Close(ptrfile);
}
@ -414,7 +414,7 @@ void ami_mouse_pointers_free(void)
{
FreeRaster(mouseptrbm[i]->Planes[0],32,32);
FreeRaster(mouseptrbm[i]->Planes[1],32,32);
FreeVec(mouseptrbm[i]);
free(mouseptrbm[i]);
}
}
}

View File

@ -66,7 +66,6 @@
#include "amiga/tree.h"
#include "amiga/file.h"
#include "amiga/libs.h"
#include "amiga/memory.h"
#include "amiga/misc.h"
#include "amiga/utf8.h"
#include "amiga/sslcert.h"
@ -133,8 +132,8 @@ static void ami_tree_get_window_dimensions(int *width, int *height, void *data);
void ami_tree_destroy(struct treeview_window *twin)
{
tree_delete(twin->tree);
FreeVec(twin->shared_pens);
FreeVec(twin);
free(twin->shared_pens);
free(twin);
}
struct tree *ami_tree_get_tree(struct treeview_window *twin)
@ -258,7 +257,7 @@ static void ami_tree_redraw_req_dr(void *p)
atrr_data->x, atrr_data->y,
atrr_data->width, atrr_data->height, &ctx);
FreeVec(atrr_data);
free(atrr_data);
ami_gui_free_space_box(bbox);
ami_update_pointer(twin->win, GUI_POINTER_DEFAULT);
ami_clearclipreg(glob);
@ -342,7 +341,7 @@ static void ami_tree_redraw_req(void *p)
}
}
FreeVec(atrr_data);
free(atrr_data);
ami_gui_free_space_box(bbox);
ami_update_pointer(twin->win, GUI_POINTER_DEFAULT);
ami_clearclipreg(glob);
@ -351,7 +350,7 @@ static void ami_tree_redraw_req(void *p)
static void ami_tree_redraw_request(int x, int y, int width, int height, void *data)
{
struct ami_tree_redraw_req *atrr_data = AllocVecTagList(sizeof(struct ami_tree_redraw_req), NULL);
struct ami_tree_redraw_req *atrr_data = malloc(sizeof(struct ami_tree_redraw_req));
atrr_data->x = x;
atrr_data->y = y;
@ -563,7 +562,7 @@ static void ami_tree_menu(struct treeview_window *twin)
{
if(twin->menu) return;
if((twin->menu = ami_misc_allocvec_clear(sizeof(struct NewMenu) * AMI_TREE_MENU_ITEMS, 0))) {
if((twin->menu = calloc(1, sizeof(struct NewMenu) * AMI_TREE_MENU_ITEMS))) {
twin->menu[0].nm_Type = NM_TITLE;
twin->menu_name[0] = ami_utf8_easy((char *)messages_get("Tree"));
twin->menu[0].nm_Label = twin->menu_name[0];
@ -900,7 +899,7 @@ void ami_tree_close(struct treeview_window *twin)
twin->menu_name[i] = NULL;
}
FreeVec(twin->menu);
free(twin->menu);
twin->menu = NULL;
ami_utf8_free(twin->wintitle);
twin->wintitle = NULL;
@ -1456,7 +1455,7 @@ struct treeview_window *ami_tree_create(int flags,
{
struct treeview_window *twin;
twin = ami_misc_allocvec_clear(sizeof(struct treeview_window), 0);
twin = calloc(1, sizeof(struct treeview_window));
if(!twin)
{

View File

@ -18,14 +18,14 @@
#include "testament.h"
/* NB: AmigaOS revision numbers start at 1 (not 0) and are monotonically
* incremental (v1.20 is higher than v1.3 and not the same as v1.2).
* Consequently, this version pair may not match the user-facing one in
* desktop/version.c. Release revisions are prepended with 6000 to ensure
* they are higher than CI builds, and make this (slightly) less confusing.
/* Release revisions are prepended with 6000 so the version numbers below
* are same as NetSurf numbering.
* CI builds use themselves as the revision.
* This means releases have a higher revision than CI builds, and stops
* problems created by "0" not being a valid AmigaOS revision number.
*/
#define NETSURF_VERSION_MAJOR "3"
#define NETSURF_VERSION_MINOR_EXTERNAL "8"
#define NETSURF_VERSION_MINOR_EXTERNAL "7"
#if defined(CI_BUILD)
#define NETSURF_VERSION_MINOR CI_BUILD
#else