+ list->stack = list->current = list->prev = NULL;
+ silc_list_init_prev(list->list, struct SilcDListEntryStruct, next, prev);
+
+ return list;
+}
+
+/****f* silcutil/SilcDListAPI/silc_dlist_sinit
+ *
+ * SYNOPSIS
+ *
+ * static inline
+ * SilcDList silc_dlist_sinit(SilcStack stack);
+ *
+ * DESCRIPTION
+ *
+ * Initializes SilcDList. Returns the SilcDList context or NULL on error.
+ * This is same as silc_dlist_init but allocates the memory from `stack'
+ * if `stack' is non-NULL.
+ *
+ ***/
+
+static inline
+SilcDList silc_dlist_sinit(SilcStack stack)
+{
+ SilcDList list;
+
+ if (stack)
+ stack = silc_stack_alloc(0, stack);
+ list = (SilcDList)silc_smalloc(stack, sizeof(*list));
+ if (!list) {
+ silc_stack_free(stack);
+ return NULL;
+ }
+ list->stack = stack;
+ list->current = list->prev = NULL;