Copyright © 2001 - 2005 SILC Project SILC Project Website | SILC Toolkit Reference Manual Index

SILC Toolkit Reference Manual SILC Core Library SILC Authentication Interface SILC Message Interface SILC Channel Interface SILC Command Interface SILC Notify Interface SILC Status Types SILC Modes SILC ID Interface SILC Argument Interface SILC Attributes Interface Packet Protocol Interface SILC Public Key Payload Interface SILC Utility Library Basic Types and Definitions Data Buffer Interface Data Buffer Format Interface Hash Table Interface Memory Allocation Interface Data Stack (memory pool) Interface Finite State Machine Interface Thread Interface Mutual Exclusion Lock Interface Condition Variable Interface Atomic Operations Interface Network (TCP and UDP) Interface Scheduler Interface Asynchronous Operation Interface Abstract Stream Interface Socket Stream Interface File Descriptor Stream Interface File Utility Functions String Utility Interface Snprintf Interface UTF-8 String Interface Stringprep Interface Utility Functions List Interface Dynamic List Interface MIME Interface Time Utility Functions Logging Interface Config File Interface SILC Key Repository Library SILC SKR Interface SILC ASN.1 Library SILC ASN.1 Interface SILC BER interface SILC Client Library Using SILC Client Library Tutorial Arguments for command_reply Client Operation SilcStatus Error Arguments in command_reply Client Operation Arguments for notify Client Operation Unicode and UTF-8 Strings in Client Library Client Library Interface Reference Client Entry Interface Reference SILC Key Exchange Library SILC SKE Interface SILC Connection Authentication Interface SILC VCard Library SILC VCard Interface SILC SFTP Library SILC SFTP Interface SFTP Filesystems Interface SILC HTTP Library SILC HTTP Server Interface SILC HTTP PHP Translator SILC Crypto Library Introduction to SILC RNG SILC RNG Interface SILC Cipher API SILC PKCS API SILC Public Key API SILC PKCS #1 API SILC Hash Interface SILC HMAC Interface SILC Application Utility Library SILC Application Utilities SILC ID Cache Interface SILC Math Library SILC MP Interface SILC Math Interface Resource Links SILC Project Website SILC Protocol Documentation SILC White Paper SILC FAQs
Function silc_stack_pop SYNOPSIS
        SilcUInt32 silc_stack_pop(SilcStack stack);
DESCRIPTION
        Pop the top of the stack upwards which reveals the previous stack frame
        and becomes the top of the stack.  After popping, memory allocated in
        the old frame is freed.  For each silc_stack_push call there must be
        silc_stack_pop call to free all memory (in reality any memory is not
        freed but within the stack it is).  This returns the stack pointer of
        old frame after popping and caller may check that it is same as
        returned by the silc_stack_push.  If it they differ, some routine
        has called silc_stack_push but has not called silc_stack_pop, or
        silc_stack_pop has been called too many times.  Application should
        treat this as a fatal error, as it is a bug in the application code.

        If `stack' is NULL this call has no effect.
EXAMPLE
        This example saves the stack pointer which is checked when popping
        the current stack frame.  If the stack pointer differs then someone
        has pushed the stack frame but forgot to pop it (or has called it
        too many times).

        sp = silc_stack_push(stack, NULL);
        silc_foo_parse_packet(packet, stack);
        if (silc_stack_pop(stack) != sp)
          fatal("corrupted stack");
SilcStack Interface SilcStack SilcStackFrame silc_stack_alloc silc_stack_free silc_stack_push silc_stack_pop

Copyright © 2001 - 2005 SILC Project SILC Project Website | SILC Toolkit Reference Manual Index