#include <stdio.h>
#include <ctype.h>
#include <unistd.h>
+#include <locale.h>
#include <libxml/parser.h>
#include <libxml/parserInternals.h> // for xmlCreateFileParserCtxt
xmlDocDumpMemory( context->value_doc, &value, &size );
mlt_properties_set( properties, context->property, _s(value) );
#ifdef WIN32
- xmlFreeFunc myXmlFree = NULL;
- xmlMemGet( &myXmlFree, NULL, NULL, NULL);
- if ( myXmlFree )
- myXmlFree( value );
-#else
- xmlFree( value );
+ xmlFreeFunc xmlFree = NULL;
+ xmlMemGet( &xmlFree, NULL, NULL, NULL);
#endif
+ xmlFree( value );
xmlFreeDoc( context->value_doc );
context->value_doc = NULL;
}
else if ( xmlStrcmp( name, _x("property") ) == 0 )
on_start_property( context, name, atts );
else if ( xmlStrcmp( name, _x("westley") ) == 0 || xmlStrcmp( name, _x("mlt") ) == 0 )
+ {
for ( ; atts != NULL && *atts != NULL; atts += 2 )
- mlt_properties_set( context->producer_map, ( const char * )atts[ 0 ], ( const char * )atts[ 1 ] );
+ {
+ if ( xmlStrcmp( atts[0], _x("LC_NUMERIC") ) )
+ mlt_properties_set( context->producer_map, _s( atts[0] ), _s(atts[1] ) );
+ else
+ setlocale( LC_NUMERIC, _s( atts[1] ) );
+ }
+ }
}
static void on_end_element( void *ctx, const xmlChar *name )
for ( i = mlt_properties_count( properties ) - 1; i >= 1; i -- )
{
char *name = mlt_properties_get_name( properties, i );
- if ( mlt_properties_get_data( properties, name, NULL ) == service )
+ if ( mlt_properties_get_data_at( properties, i, NULL ) == service )
{
mlt_properties_set_data( properties, name, service, 0, NULL, NULL );
break;