[Mapserver-dev] copyProperty in mapserver

Mladen Turk mturk at apache.org
Sun May 30 15:19:21 EDT 2004


This is a multi-part message in MIME format.

------=_NextPart_000_0006_01C4468B.C24B26C0
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit

Hi all,

There are a couple of issues dealing with mapCopy caused by the copyProperty
calls.

The first one is caused by using copyStringProperty, that in almost all
cases should be changed to copyStringPropertyRealloc.

The reason is cause the fist one simply assigns the pointers while the other
does a strdup. Later on when the object is freed, the same string gets freed
twice, and that makes the things crash.

For example the copySymbol (see bug #640), or the #700 for copyWeb is caused
by the same problem (see the patches).

So, for all dynamic strings the copyStringPropertyRealloc should be used.

Also there is a heavily use of copyProperty for simple integral data types
like integers, pointers, etc.
Using memcpy for such integral types is way too much overhead though. Simple
integer assignment is replaced with at least 2 function calls.
It also makes the code totally unreadable.

For example I found my self thinking about the:
  copyProperty(&(dst->map), &map, sizeof(mapObj *));
that is in fact the:
  dst->map = map;

Very amusing :-)


Also I propose that the copyStringPropertRealloc gets replaced by the simple
macro:

#define STRDUPX(os, ns)         \
    do {                        \
        if ((os) != NULL)       \
            msFree((os));       \
        (os) = strdup((ns));    \
    } while (0)

Then one can simply use the:
STRDUPX(dst->imagepath, src->imagepath);

And for character arrays simply use the strcpy.


MT.

------=_NextPart_000_0006_01C4468B.C24B26C0
Content-Type: application/x-pkcs7-signature;
	name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="smime.p7s"

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIJADCCAogw
ggHxoAMCAQICAwxGPTANBgkqhkiG9w0BAQQFADBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhh
d3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVt
YWlsIElzc3VpbmcgQ0EwHhcNMDQwNTA4MTc0OTIyWhcNMDUwNTA4MTc0OTIyWjBpMR8wHQYDVQQD
ExZUaGF3dGUgRnJlZW1haWwgTWVtYmVyMSUwIwYJKoZIhvcNAQkBFhZtbGFkZW4udHVya0BnaXNk
YXRhLmhyMR8wHQYJKoZIhvcNAQkBFhBtdHVya0BhcGFjaGUub3JnMIGfMA0GCSqGSIb3DQEBAQUA
A4GNADCBiQKBgQDDFpTL3QpMpzZNX4hMRwNoTAcJtSF18PnJf3oUryvGmggiy9cbJAuScvfVku2R
DDeBdJaVqDb83nYQydW6JvZI7m2oKApNRV9veadN/T7Fq81QcSBAQgXRyNWCMyl832zOxDrZNchH
kgQzkm67IMHXxDd8LYAxAj8eFFLuV+g29QIDAQABo0UwQzAzBgNVHREELDAqgRZtbGFkZW4udHVy
a0BnaXNkYXRhLmhygRBtdHVya0BhcGFjaGUub3JnMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEE
BQADgYEAtF/h4HA4Zt+3J1a3P0y4Yllqa3srAR+oHJMpQjFLSoUYHkwBQW7iuCWCuzthoIbW/Wuk
g9ww/RSSCJUOFuHham7kClwbWFoRZL9i61L3vfoM3AMKVOj2T0JmoAV+4Ib6lGSaX7DywGbZB5qd
9gpfITF2Cl56XdZ8EXHA2kj2I9cwggMtMIIClqADAgECAgEAMA0GCSqGSIb3DQEBBAUAMIHRMQsw
CQYDVQQGEwJaQTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xGjAY
BgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2Vz
IERpdmlzaW9uMSQwIgYDVQQDExtUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgQ0ExKzApBgkqhkiG
9w0BCQEWHHBlcnNvbmFsLWZyZWVtYWlsQHRoYXd0ZS5jb20wHhcNOTYwMTAxMDAwMDAwWhcNMjAx
MjMxMjM1OTU5WjCB0TELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UE
BxMJQ2FwZSBUb3duMRowGAYDVQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlm
aWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVt
YWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUuY29tMIGfMA0G
CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUadfUsJRkW3HpR9gMUbbqcpGwhF59LQ2PexLfhSV1KHQ6
QixjJ5+Ve0vvfhmHHYbqo925zpZkGsIUbkSsfOaP6E0PcR9AOKYAo4d49vmUhl6t6sBeduvZFKNd
bnp8DKVLVX8GGSl/npom1Wq7OCQIapjHsdqjmJH9edvlWsQcuQIDAQABoxMwETAPBgNVHRMBAf8E
BTADAQH/MA0GCSqGSIb3DQEBBAUAA4GBAMfskn5O+PWWpWdiKqTwTRFg0G+NYFhhrCa7UjVcCM8w
+6hKloofYkIjjBcP9LpknBesRynfnZhe0mxgcVyirNx54+duAEcftQ0o6AKd5Jr9E/Sm2Xyx+Nxf
IyYJkYBz0BQb3kOpgyXy5pwvFcr+pquKB3WLDN1RhGvk+NHOd6KBMIIDPzCCAqigAwIBAgIBDTAN
BgkqhkiG9w0BAQUFADCB0TELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAG
A1UEBxMJQ2FwZSBUb3duMRowGAYDVQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2Vy
dGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZy
ZWVtYWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUuY29tMB4X
DTAzMDcxNzAwMDAwMFoXDTEzMDcxNjIzNTk1OVowYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRo
YXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVl
bWFpbCBJc3N1aW5nIENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEpjxVc1X7TrnKmVoe
aMB1BHCd3+n/ox7svc31W/Iadr1/DDph8r9RzgHU5VAKMNcCY1osiRVwjt3J8CuFWqo/cVbLrzwL
B+fxH5E2JCoTzyvV84J3PQO+K/67GD4Hv0CAAmTXp6a7n2XRxSpUhQ9IBH+nttE8YQRAHmQZcmC3
+wIDAQABo4GUMIGRMBIGA1UdEwEB/wQIMAYBAf8CAQAwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDov
L2NybC50aGF3dGUuY29tL1RoYXd0ZVBlcnNvbmFsRnJlZW1haWxDQS5jcmwwCwYDVR0PBAQDAgEG
MCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFQcml2YXRlTGFiZWwyLTEzODANBgkqhkiG9w0BAQUF
AAOBgQBIjNFQg+oLLswNo2asZw9/r6y+whehQ5aUnX9MIbj4Nh+qLZ82L8D0HFAgk3A8/a3hYWLD
2ToZfoSxmRsAxRoLgnSeJVCUYsfbJ3FXJY3dqZw5jowgT2Vfldr394fWxghOrvbqNOUQGls1TXfj
ViF4gtwhGTXeJLHTHUb/XV9lTzGCAs8wggLLAgEBMGkwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoT
HFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBG
cmVlbWFpbCBJc3N1aW5nIENBAgMMRj0wCQYFKw4DAhoFAKCCAbwwGAYJKoZIhvcNAQkDMQsGCSqG
SIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDQwNTMwMTkxOTE0WjAjBgkqhkiG9w0BCQQxFgQUTov7
tRGPS2/wFPNgz+XQC7HFTPkwZwYJKoZIhvcNAQkPMVowWDAKBggqhkiG9w0DBzAOBggqhkiG9w0D
AgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgwBwYFKw4DAhowCgYI
KoZIhvcNAgUweAYJKwYBBAGCNxAEMWswaTBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3Rl
IENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWls
IElzc3VpbmcgQ0ECAwxGPTB6BgsqhkiG9w0BCRACCzFroGkwYjELMAkGA1UEBhMCWkExJTAjBgNV
BAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25h
bCBGcmVlbWFpbCBJc3N1aW5nIENBAgMMRj0wDQYJKoZIhvcNAQEBBQAEgYBxOS/9M23GnveCVq/2
v4j3ilhSojpBL2u32zxrtXBxXO7Mjkqte9CHlvAjH//gtxbVFgDZeXSuNkWVV/rSGlx5ryeVPLDl
IK1ukOnnWaXH6pHQN5y6I+aNom1sS+l3wmG2ys40hvjXA/6nFyDEC3I5MY6k71CH6WMqTIurEpYU
PwAAAAAAAA==

------=_NextPart_000_0006_01C4468B.C24B26C0--




More information about the mapserver-dev mailing list