Changeset 32 for trunk/fastxsl.c

Show
Ignore:
Timestamp:
08/23/07 12:26:27 (7 years ago)
Author:
jesus
Message:

completely reimplement the document() function minus some evil

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/fastxsl.c

    r31 r32  
    425425                        int rv; 
    426426                        ss_wrapper->alloc_type = FASTXSL_SHMALLOC; 
    427                         ss_wrapper->data_type = FASTXSL_STYLESHEET; 
    428                         if(FASTXSL_G(replace_document_function)) { 
    429                                 func = xmlXPathFunctionLookup(ctxt->context, (const xmlChar *)"original_document"); 
    430                         } 
    431                         else { 
    432                                 func = xmlXPathFunctionLookup(ctxt->context, (const xmlChar *)"document"); 
    433                         } 
    434                         valuePush(ctxt, xmlXPathObjectCopy(ctxt->value)); 
    435                         func(ctxt, nargs); 
     427                        ss_wrapper->data_type = FASTXSL_XPATHOBJ; 
    436428                        ShmCache_UseAllocationFunctions(); 
    437429inshm = 1; 
    438430                        FASTXSL_G(tmp_allocated_size) = 0; 
     431                        valuePush(ctxt, xmlXPathObjectCopy(ctxt->value)); 
     432                        HACK_xsltDocumentFunction(ctxt, nargs); 
    439433                        ss_wrapper->data.op = xmlXPathObjectCopy(ctxt->value); 
     434                        valuePop(ctxt); 
    440435                        ss_wrapper->allocsize = FASTXSL_G(tmp_allocated_size); 
    441436inshm = 0; 
    442437                        Xml_UseAllocationFunctions(); 
    443                         valuePop(ctxt); 
    444438                        ss_wrapper->mtime = sb.st_mtime; 
    445439                        mm_lock(FASTXSL_G(cache)->mm, MM_LOCK_RD); 
     
    489483                                        ss_wrapper->alloc_type = FASTXSL_SHMALLOC; 
    490484                                        ss_wrapper->data_type = FASTXSL_STYLESHEET; 
    491                                         if(FASTXSL_G(replace_document_function)) { 
    492                                                 func = xmlXPathFunctionLookup(ctxt->context, (const xmlChar *)"original_document"); 
    493                                         } 
    494                                         else { 
    495                                                 func = xmlXPathFunctionLookup(ctxt->context, (const xmlChar *)"document"); 
    496                                         } 
    497                                         valuePush(ctxt, xmlXPathObjectCopy(ctxt->value)); 
    498                                         func(ctxt, nargs); 
    499485                                        ShmCache_UseAllocationFunctions(); 
    500486inshm = 1; 
    501487                                        FASTXSL_G(tmp_allocated_size) = 0; 
     488                                        valuePush(ctxt, xmlXPathObjectCopy(ctxt->value)); 
     489                                        HACK_xsltDocumentFunction(ctxt, nargs); 
    502490                                        ss_wrapper->data.op = xmlXPathObjectCopy(ctxt->value); 
     491                                        valuePop(ctxt); 
     492                                        ss_wrapper->allocsize = FASTXSL_G(tmp_allocated_size); 
    503493inshm = 0; 
    504494                                        Xml_UseAllocationFunctions(); 
    505                                         valuePop(ctxt); 
    506495                                        ss_wrapper->mtime = sb.st_mtime; 
    507                                         ss_wrapper->allocsize = FASTXSL_G(tmp_allocated_size); 
    508496                                        mm_lock(FASTXSL_G(cache)->mm, MM_LOCK_RD); 
    509497                                        rv = fl_hash_add(FASTXSL_G(cache)->table, ss_filename, ss_filename_len, ss_wrapper);