X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=form%2Ffld_dup.c;h=e195df958877a2cf9f8692a2f28c7caadc8077f9;hp=7091bce4f0ecfdbb4e9a77a491dd072bad4cc220;hb=d6c65d287166c3105ece4a5e3f3ec7af5a5f26a3;hpb=5242fccf157e715ed878455a3efea6c82b840eb5 diff --git a/form/fld_dup.c b/form/fld_dup.c index 7091bce4..e195df95 100644 --- a/form/fld_dup.c +++ b/form/fld_dup.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2007 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2010,2012 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -32,7 +33,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_dup.c,v 1.11 2007/02/03 23:37:46 tom Exp $") +MODULE_ID("$Id: fld_dup.c,v 1.18 2020/05/24 01:40:20 anonymous.maarten Exp $") /*--------------------------------------------------------------------------- | Facility : libnform @@ -47,21 +48,21 @@ MODULE_ID("$Id: fld_dup.c,v 1.11 2007/02/03 23:37:46 tom Exp $") | | Return Values : Pointer to the new field or NULL if failure +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELD *) +FORM_EXPORT(FIELD *) dup_field(FIELD *field, int frow, int fcol) { FIELD *New_Field = (FIELD *)0; int err = E_BAD_ARGUMENT; - T((T_CALLED("dup_field(%p,%d,%d)"), field, frow, fcol)); + T((T_CALLED("dup_field(%p,%d,%d)"), (void *)field, frow, fcol)); if (field && (frow >= 0) && (fcol >= 0) && ((err = E_SYSTEM_ERROR) != 0) && /* trick : this resets the default error */ - (New_Field = (FIELD *)malloc(sizeof(FIELD)))) + (New_Field = typeMalloc(FIELD, 1))) { - T((T_CREATE("field %p"), New_Field)); + T((T_CREATE("field %p"), (void *)New_Field)); *New_Field = *_nc_Default_Field; - New_Field->frow = frow; - New_Field->fcol = fcol; + New_Field->frow = (short)frow; + New_Field->fcol = (short)fcol; New_Field->link = New_Field; New_Field->rows = field->rows; New_Field->cols = field->cols; @@ -79,13 +80,12 @@ dup_field(FIELD *field, int frow, int fcol) if (_nc_Copy_Type(New_Field, field)) { - size_t i, len; + size_t len; len = Total_Buffer_Size(New_Field); - if ((New_Field->buf = (FIELD_CELL *)malloc(len))) + if ((New_Field->buf = (FIELD_CELL *)malloc(len * 20))) { - for (i = 0; i < len; ++i) - New_Field->buf[i] = field->buf[i]; + memcpy(New_Field->buf, field->buf, len); returnField(New_Field); } }