crash at shockwave
Tonigs, Nils
ntonigs at ukaachen.de
Fri Sep 4 04:31:36 CDT 2009
Hi Ruslan,
Hi Kirill,
i use v4md 4.2 for windows with director 10.1 and valentina office server 4.2.
now, it seems that I have the same problem I had posted on 16.06.09, but this time at shockwave:
the statement getMedia() crash the browser with the alert:
"Die Anweisung in '0x6805a74d' verweist auf Speicher in '0x839ae850'. Der Vorgang 'written' konnte nicht auf dem Speicher durchgeführt werden."
(The instruction in ' 0x6805a74d' refers to memory in ' 0x839ae850'. The procedure 'written' could not be accomplished on the memory)
If field of other types than BLOB are used, no error appears.
And here the lingo-script that causes the crash:
"...
case TRUE of
( (NOT _global.g_o_dbCursor ) OR ( _global.g_o_dbCursor = VOID ) ):
-- AUSNAHMEBEHANDLUNG
-- NUR PHP mysql_free_result( l_result ) -- leert den arbeitsspeichern fuer ein neues abfrage-ergebnis
l_aoh_objectData = FALSE
( objectP( _global.g_o_dbCursor ) ):
l_int_anzahlResults = _global.g_o_dbCursor.recordCount
put( l_int_anzahlResults )
l_int_fieldCount = _global.g_o_dbCursor.fieldCount
repeat with w = 1 to l_int_fieldCount
l_sym_feldName = symbol( _global.g_o_dbCursor.field[ w ].name )
put( "feld: " & l_sym_feldName & " ==> " )
if ( l_int_anzahlResults = 0 ) then
-- *** LEERER VCURSOR ***
-- defaultwerte aus liste behalten
-- vom medien-darsteller ein dublikat herstellen
if ( l_sym_feldName = #binary_media ) then
-- einen bilddarsteller für mediaItem erzeugen und speichern
l_o_medienDarsteller = _movie.newMember( symbol( #bitmap ) )
put( "DEFAULT darsteller für MEDIA ==> " & l_o_medienDarsteller )
l_o_medienDarsteller.image = l_aoh_objectData[ l_sym_tabellenName ][ #binary_media ][ 1 ].image.duplicate()
-- in defaultliste speichern
l_aoh_objectData[ l_sym_tabellenName ][ #binary_media ][ 1 ] = l_o_medienDarsteller
end if
-- feld RECID
if ( l_sym_feldName = #RecID ) then
l_aoh_objectData[ l_sym_tabellenName ][ l_sym_feldName ][ 1 ] = VOID
end if
put( "defaultwert beibehalten" )
else if ( l_int_anzahlResults > 0 ) then
-- *** VCURSOR MIT DATEN ***
-- wenn es binärdaten sind (BLOB-feld) ....
if ( l_sym_feldName = #binary_media ) then
-- einen bilddarsteller für mediaItem erzeugen und speichern
l_o_medienDarsteller = _movie.newMember( symbol( #bitmap ) )
put( "NEUR darsteller für MEDIA ==> " & l_o_medienDarsteller )
-- bilddatei aus db-feld in temporaeren darsteller importieren
>>>>>>>>CRASH>>>>>>>>>>>>> _global.g_o_dbCursor.field( w ).getMedia( l_o_medienDarsteller )
l_aoh_objectData[ l_sym_tabellenName ][ #binary_media ][ 1 ] = l_o_medienDarsteller
else
-- dann den wert aus dem VCursor in die meiner liste speichern
dfghjk = g_o_dbCursor.field[ w ].value
if NOT( dfghjk = VOID ) then
-- wert aus dbfeld übernehmen
l_aoh_objectData[ l_sym_tabellenName ][ l_sym_feldName ][ 1 ] = _global.g_o_dbCursor.field[ w ].value
put( l_sym_feldName & " ==> " & l_aoh_objectData[ l_sym_tabellenName ][ l_sym_feldName ] )
end if
end if
end if
end repeat
end case
..."
And here my additionale description:
This script-segment will fill the fieldcontent of the VCusor-object (global variable) into a proplist called 'l_aoh_objectData' and is located in repeat-loop (not shown) the work with different sql-statements.
In case of a empty VCusor the proplist 'l_aoh_objectData' is prefilled with defaultvalues.
The exeption is the field 'binary_media' (type BLOB). This value will be stored in a castmember. The proplist only hold a reference to this member.
Sorry, but at shockwave I get no logs.
The last output at the messagewindow is "NEUR darsteller für MEDIA ==> (member 73 of castLib 1)" from the line befor the getMedia().
My tests with the example-script "Remote&Local" works well, of course it use no BLOB-fields.
Regards
Nils Tonigs
Audiovisuelles Medienzentrum
Medizinische Fakultät der RWTH Aachen
Pauwelsstr. 30
52074 Aachen
Tel.: +49-(0)241-80-89035
Fax: +49-(0)241-80-82561
E-Mail: ntonigs at ukaachen.de
More information about the Valentina
mailing list