#!/usr/bin/python

import module
import sys
import time

class ADerived( module.A ):
    def __init__( self ):
        module.A.__init__( self )

    def f( self ):
        print "In f"

tmp = ADerived()
class AFactoryDerived( module.AFactory ):
    def __init__( self ):
        module.AFactory.__init__( self )

    def newA( self ):
        if( sys.argv[1] == 'crash' ):
            return ADerived() # segfaults
        else:
            return tmp        # works

module.f1( tmp )

afd = AFactoryDerived()
module.f2( afd )
