ncurses 6.1 - patch 20190309
[ncurses.git] / form / fld_ftlink.c
index 1c30cab244a4afa176c3520304ae11304d4ed1c0..e7b1440ac538a93058b0b25b96295c0e7f1ac180 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 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            *
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
+ *   Author:  Juergen Pfeifer, 1995,1997                                    *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_ftlink.c,v 1.4 1999/05/16 17:17:33 juergen Exp $")
+MODULE_ID("$Id: fld_ftlink.c,v 1.15 2012/06/10 00:27:49 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -46,38 +46,42 @@ MODULE_ID("$Id: fld_ftlink.c,v 1.4 1999/05/16 17:17:33 juergen Exp $")
 |                       E_BAD_ARGUMENT  - invalid arguments
 |                       E_SYSTEM_ERROR  - system error (no memory)
 |
-|   Return Values :  Fieldtype pointer or NULL if error occured.
+|   Return Values :  Fieldtype pointer or NULL if error occurred.
 +--------------------------------------------------------------------------*/
-FIELDTYPE *link_fieldtype(FIELDTYPE * type1, FIELDTYPE * type2)
+NCURSES_EXPORT(FIELDTYPE *)
+link_fieldtype(FIELDTYPE *type1, FIELDTYPE *type2)
 {
   FIELDTYPE *nftyp = (FIELDTYPE *)0;
 
-  if ( type1 && type2 )
+  T((T_CALLED("link_fieldtype(%p,%p)"), (void *)type1, (void *)type2));
+  if (type1 && type2)
     {
-      nftyp = (FIELDTYPE *)malloc(sizeof(FIELDTYPE));
+      nftyp = typeMalloc(FIELDTYPE, 1);
+
       if (nftyp)
        {
+         T((T_CREATE("fieldtype %p"), (void *)nftyp));
          *nftyp = *_nc_Default_FieldType;
-         nftyp->status |= _LINKED_TYPE;
-         if ((type1->status & _HAS_ARGS) || (type2->status & _HAS_ARGS) )
-           nftyp->status |= _HAS_ARGS;
-         if ((type1->status & _HAS_CHOICE) || (type2->status & _HAS_CHOICE) )
-           nftyp->status |= _HAS_CHOICE;
-         nftyp->left  = type1;
-         nftyp->right = type2; 
+         SetStatus(nftyp, _LINKED_TYPE);
+         if ((type1->status & _HAS_ARGS) || (type2->status & _HAS_ARGS))
+           SetStatus(nftyp, _HAS_ARGS);
+         if ((type1->status & _HAS_CHOICE) || (type2->status & _HAS_CHOICE))
+           SetStatus(nftyp, _HAS_CHOICE);
+         nftyp->left = type1;
+         nftyp->right = type2;
          type1->ref++;
          type2->ref++;
        }
       else
        {
-         SET_ERROR( E_SYSTEM_ERROR );
+         SET_ERROR(E_SYSTEM_ERROR);
        }
     }
   else
     {
-      SET_ERROR( E_BAD_ARGUMENT );
+      SET_ERROR(E_BAD_ARGUMENT);
     }
-  return nftyp;
+  returnFieldType(nftyp);
 }
 
 /* fld_ftlink.c ends here */