[Gambas-bugtracker] Bug #2255: Gambas3 Structs Array still confused with EXTERN call

bugtracker at gambaswiki.org bugtracker at gambaswiki.org
Sun Jun 13 20:49:17 CEST 2021


http://gambaswiki.org/bugtracker/edit?object=BUG.2255&from=L21haW4-

John ANDERSON reported a new bug.

Summary
-------

Gambas3 Structs Array still confused with EXTERN call

Type             : Bug
Priority         : High
Gambas version   : Master
Product          : Development Environment


Description
-----------

I know I might be doing something wrong here, but I think Gambas3 might be not quite correct either.

I setup an Array of Mystructs as MyBigArray.  I need to copy contents of one element of array to a single struct.  First Gambas tells my that Copy method is available, so I pick that from list, and then at Run Gambas says method .Copy is not available. ?

I can't get a VarPtr to (MyBigArray[5])...but I can get VarPtr to (MyBigArray)?   I want to easily get the pointer to the fifth index into my array of structs...like any language. 

On object browser, I am wondering why the Hex address if all the elements of arrays inside of struct are all the same address??  Or am I looking at wrong thing.

Now I need to test some EXTERN function calls.  Gambas won't let me out one array element (and I tried write / read with no luck).  I try memmove as shown.  All I get is after I tryo to copy data into MySVar, MySvar is suddenly NULL, and object browser is DEAD, and then I get unfreed stuff again when program terminates.  Not sure where circular reference is to MyStruct.

Yes I did look at wiki for EXTERN rules and it does say to send Size_T as Pointer.  OK.  I set it up that way.  NOTE:  If I call Memmove with VarPtr(StructLength), Gambas will SegFault.  So I tested the way it is in this attached project file...it doesn't SegFault, but it wipes out MySVar.


System information
------------------

[System]
Gambas=3.16.90
OperatingSystem=Linux
Kernel=5.4.0-74-generic
Architecture=x86_64
Distribution=Linux Mint 20.1 Ulyssa
Desktop=CINNAMON
Font=Ubuntu,10
Scale=7
Theme=mint-y-aqua
Language=en_US.UTF-8
Memory=7868M

[Libraries]
Cairo=libcairo.so.2.11600.0
Curl=libcurl.so.4.6.0
DBus=libdbus-1.so.3.19.11
GDK2=libgdk-x11-2.0.so.0.2400.32
GDK3=libgdk-3.so.0.2404.16
GStreamer=libgstreamer-1.0.so.0.1602.0
GTK+2=libgtk-x11-2.0.so.0.2400.32
GTK+3=libgtk-3.so.0.2404.16
OpenGL=libGL.so.1.7.0
Poppler=libpoppler.so.97.0.0
QT5=libQt5Core.so.5.12.8
SDL=libSDL-1.2.so.0.11.4
SQLite=libsqlite3.so.0.8.6

[Environment]
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
DEFAULTS_PATH=/usr/share/gconf/cinnamon.default.path
DESKTOP_SESSION=cinnamon
DISPLAY=:0
GB_GUI=gb.gtk3
GDMSESSION=cinnamon
GDM_LANG=en_US
GENICAM_CLPROTOCOL=/opt/matrox_imaging/mil/../drivers/genicam/v3_2/bin/
GENICAM_MAJOR=3
GENICAM_MINOR=2
GIO_LAUNCHED_DESKTOP_FILE=<home>/Desktop/gambas3.desktop
GIO_LAUNCHED_DESKTOP_FILE_PID=114062
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1
GTK3_MODULES=xapp-gtk3-module
GTK_MODULES=gail:atk-bridge
GTK_OVERLAY_SCROLLING=1
HOME=<home>
INSIDE_NEMO_PYTHON=
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8
LOGNAME=<user>
MANDATORY_PATH=/usr/share/gconf/cinnamon.mandatory.path
MILDIR=/opt/matrox_imaging/mil
MIL_GENICAM_PATH=/opt/matrox_imaging/mil/../drivers/genicam
MIL_XML_REPOSITORY=/opt/matrox_imaging/mil/../drivers/genicam/v3_2/xml/GenApi
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/matrox_imaging/mil/../tools
PWD=<home>
QT_ACCESSIBILITY=1
QT_LOGGING_RULES=*.debug=false
QT_QPA_PLATFORMTHEME=qt5ct
SESSION_MANAGER=local/<hostname>:@/tmp/.ICE-unix/1595,unix/<hostname>:/tmp/.ICE-unix/1595
SHELL=/bin/bash
SHLVL=0
SSH_AGENT_PID=1771
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
TEMP=/tmp
TZ=:/etc/localtime
USER=<user>
XAUTHORITY=<home>/.Xauthority
XDG_CONFIG_DIRS=/etc/xdg/xdg-cinnamon:/etc/xdg
XDG_CURRENT_DESKTOP=X-Cinnamon
XDG_DATA_DIRS=/usr/share/cinnamon:/usr/share/gnome:<home>/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/<user>
XDG_RUNTIME_DIR=/run/user/1000
XDG_SEAT=seat0
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
XDG_SESSION_CLASS=user
XDG_SESSION_DESKTOP=cinnamon
XDG_SESSION_ID=c1
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
XDG_SESSION_TYPE=x11
XDG_VTNR=7




More information about the Bugtracker mailing list