Knowledgebase:
Miva Empresa/Mia/Script Compiler v5.23 Release Notes
Posted by Wayne Smith on 24 September 2015 03:28 PM

Bugs Fixed

----------

15219: Virtual Machine: HTTP headers are not correctly parsed in some cases

17647: Code Coverage Tool: mvcov --version flag should output a newline

17648: Profiling Tool: mvprof --version flag should output a newline

17782: Compiler: Compiling with -O flag on a string with escape characters causes unexpected behavior

18236: Compiler: Function parameters should not allow blank values

18241: Compiler: Compiler fails to correctly compile when a <![CDATA[ tag is present as XML/HTML

19027: Builtins: system: bi_miva_getvarlist should use memcmpi

19031: Compiler: Function parameters should only allow alphanumeric and underscore characters 19032: Configuration: Environment Based: Allow MvCONFIG_* integer data types to be specified in hexadecimal

19033: Configuration: 3.x: Allow MvCONFIG_* integer data types to be specified in hexadecimal

19168: Virtual Machine: Function parameter logging should recursively output structures and arrays

19415: Virtual Machine: Expression compiler fails to recognize invalid function when wrapped in RHS parentheses and combined with a BINARY operator

19489: Virtual Machine: htscallerid cookie is not properly handled on IIS7

19490: Virtual Machine: All application versions should free OpenSSL error strings

19492: Virtual Machine: ::MakeSessionID should initialize all data to 0

19493: Compiler: UNIXCompilerApplication never deletes its _library_manager pointer

19494: Compiler: Parser::~Parser never deletes its expression_parser pointer

19495: Compiler: FileCompilerParser::* - Allocated memory is not being deleted properly 19496: Assembler: AssemblerParser leaks memory when dealing with FunctionContexts

19497: Compiler: CompilerApplication::Go never deletes its parser pointer when a compile error occurs

19499: Assembler: AssemblerParser::ProcessImmediate never deletes allocated pointer

19516: Virtual Machine: String method "assign_nocopy" is incorrectly used in a number of places

19538: Virtual Machine: UNIXNetwork/WinSockNetwork::ReadLine does not build the buffer correctly when sequential reads occur without a newline 19547: Virtual Machine: s.callnumberofheaders is set incorrectly

19595: Virtual Machine: Variable's reference counts should be incremented when pushed onto the stack

19597: Virtual Machine: MivaVM_Stack::PopS: We should NULL terminate the copied variable string

19614: MivaSQL: Index lookups with keys longer than the 100 character limit result in incorrect resultsets

19685: Virtual Machine: MivaVM::Lookup_VariableList sometimes returns the incorrect number of list entries

19824: Compiler: CompilerParser fails to delete its pointers to global_variables and system_variables

19825: Compiler: CompilerParser does not delete the pointers stored in the called_functions hash table

19882: Builtins: file: bi_dir does not released its allocated VariableList

19883: Virtual Machine: mvDirectory_Listing should not increase the new variables refcount

19886: MivaSQL: SQLCreateIndexStatement fails to delete elements stored in the index_columnlist

19887: Builtins: system: miva_array_copy should not increase the new variables refcount

19888: Builtins: system: miva_array_merge should not increase the new variables refcount

19889: Configuration: 3.x: config3x_setconfigvalue fails to free memory when handling the CONFIG3X_SETTING_BUILTINDIR case

19890: Configuration: 3.x: Memory leak in config.l when parsing configuration files

19891: Builtins: archive: wdownload fails to free all of its allocate data

19892: Builtins: archive: xml_parse fails to delete the root context

19894: Builtins: archive: bi_tar_directory does not free the member variable

19895: MySQL Connector: The MySQL Connector needs to call mysql_library_end() in order to avoid memory leaks

19897: MivaSQL: xbasesql_db_openview doesn't delete the allocated view_context when an error occurs

19898: Virtual Machine: MivaVM_Stack::PopV( Variable **, int * ) does not delete string or link buffer data when the delete flag is set

19899: Builtins: system: miva_json_decode leaks memory in multiple locations

19900: Virtual Machine: SMTP::Start fails to delete its created SMTPOutput variable 19901: Builtins: mvlibgd: libgd_load_context does not delete its allocated context when an error occurs

19903: Builtins: template: mvt:assign/eval/do/call/foreach*/while* leak memory when outputting their error messages

19904: Builtins: mvlibgd: libgd_context_cleanup does not clean up all allocated memory

19906: Configuration: 3.x: VirtualHost tags do not behave properly when dnslookup is enabled

19907: Assembler: LocalizedIndex::Write does not fill the entire buffer; causes a Valgrind warning

19908: Compiler: ExpressionParser::Parse_Funcdo does not delete its Tokenizer pointer

19909: Builtins: crypto: bi_crypto_pbkdf2 fails to call all required OpenSSL cleanup functions

19912: Miva Mia: Miva Mia does not set s.content_length or s.content_type

19913: Miva Mia: Frequent crashes at address 0x0001fbf3 in MVDMYSQL.DLL when connecting to a MySQL server (Mia)

19915: Virtual Machine: MvCALL leaks memory when an invalid URL is specified or connection to the remote server fails

 

New Builtin Functions

---------------------

- slugify( data )

Use this function to create friendly URLs. It takes characters that are forbidden in URIs and either converts them to a valid ASCII character or remove thems completely. It adds a hyphen (-) in place of all space characters. For example, the product "Dodger Blue Baseball Hat!" becomes "Dodger-Blue-Baseball-Hat" which is now URI friendly.

Parameters:

- data - The string to convert

Return Value:

- The converted URI friendly string

- miva_splitstring( string, sep, output var, flags )

Splits a string into chunks in an array, using the separator parameter as the point to split the string.

Parameters:

- string - The input string

- sep - A single character that will be used to split the string into multiple elements

- output var - The array of elements

- flags - A comma separated list of any of the following:

- trim - removes extra space around the left and right sides of all elements

- ltrim - removes extra space around the left side of all elements

- rtrim - removes extra space around the right side of all elements

- lower - converts all elements to lowercase

- upper - converts all elements to uppercase

- insensitive - searches for the sep input parameter using a case-insensitive search

 

Return Value:

- The number of elements in the output array

- fssymlink( source, destination )

This function creates a symbolic link from a file in the data directory to the scripts directory (Available on UNIX file systems only)

Parameters:

- source - source file fully qualified path in the data directory

- destination - destination file fully qualified path in the scripts directory

Return Value:

- 1 if success, 0 if fail

- sfsymlink( source, destination )

This function creates a symbolic from a file in the scripts directory to the data directory (Available on UNIX file systems only)

Parameters:

- source - source file fully qualified path in the scripts directory

- destination - destination file fully qualified path in the data directory

Return Value: - 1 if success, 0 if fail

 

New API Methods

---------------

mvProgram_CharacterSetIsUTF8 - Determines whether the current character set is set to UTF8

Parameters:

- mvProgram program: The current MivaVM

Return Value: - 1 if the character set is UTF8, 0 otherwise

mvProgram_GetCharacterSet - Returns the current character set

Parameters:

- mvProgram program: The current MivaVM

Return Value:

- A null terminated string containing the current character set

mvLinkBuffer_Allocate - A wrapper method used to interact with the LinkBuffer class

Parameters:

- int first_block_size - The size in bytes of the first block to be created

- int grow_size - The size in bytes of all subsequent blocks that are created

Return Value:

- Returns an mvLinkBuffer which is a pointer to the LinkBuffer class in memory

mvLinkBuffer_Free - A wrapper method used to delete a previously allocated LinkBuffer

Parameters:

- mvLinkBuffer linkbuffer - A previously allocated mvLinkBuffer

Return Value:

- None

mvLinkBuffer_Concat_String - A wrapper method used to append a string to the end of the LinkBuffer string

Parameters:

- mvLinkBuffer linkbuffer - A previously allocated mvLinkBuffer

- const char *data - The data string to add to the end of the LinkBuffer string

- int data_length - The length of the passed in data pointer

Return Value:

- None

mvLinkBuffer_Concat_Char - A wrapper method used to append a character to the end of the LinkBuffer string

Parameters:

- mvLinkBuffer linkbuffer - A previously allocated mvLinkBuffer

- char data - A single character to add to the end of the LinkBuffer string

Return Value:

- None

mvLinkBuffer_Concat_HexChar - A wrapper method used to append a character in hex format to the end of the LinkBuffer string

Parameters:

- mvLinkBuffer linkbuffer - A previously allocated mvLinkBuffer

- unsigned char data - A single character that will be converted to hex, then added to the end of the LinkBuffer string

Return Value:

- None

mvLinkBuffer_Concat_Release - A wrapper method used to get the value of all LinkBuffer blocks glued together. Using this method will clear out the data from the LinkBuffer memory and you are responsible for freeing it from memory.

Parameters:

- mvLinkBuffer linkbuffer - A previously allocated mvLinkBuffer

- int *data_length - An output parameter stating the length of the returned data string

- int *data_size - An output parameter stating how many bytes are allocated for the returned data string

- int headroom - A value that ensures X number of extra bytes are available in the size of the returned data string (useful if you want to ensure there is enough room to null-terminate the string)

Return Value:

- (char * ) A null-terminated string of all the data blocks glued together

mvLinkBuffer_Data - A wrapper method used to get the value of all LinkBuffer blocks glued together. Using this method will not clear out the data from memory and you should not free this from memory.

Parameters:

- mvLinkBuffer linkbuffer - A previously allocated mvLinkBuffer

- int *data_length - An output parameter stating the length of the returned data string

Return Value:

- (const char * ) A null-terminated string of all the data blocks glued together

 

StoreMorph Changes

------------------

- &mvts:...; (outputs a token using the slugify function)

 

Other Changes

-------------

- Both the MivaScript compiler and virtual machine are now supported on MacOS X

- Hexadecimal values are now allowed for numeric configuration settings, such as MvCONFIG_FLAGS_SECURITY and MvCONFIG_LOG_LEVEL

(0 vote(s))
This article was helpful
This article was not helpful

Comments (0)
Post a new comment
 
 
Full Name:
Email:
Comments:
CAPTCHA Verification 
 
Please enter the text you see in the image into the textbox below. This is required to prevent automated registrations and form submissions.

Help Desk Software by Kayako support.miva.com/supportsuite/index.php?