freetds AT lists.ibiblio.org
Subject: FreeTDS Development Group
List archive
Re: [freetds] 0.62rc3 + Sybase ASA: good except tsql - here's a patch
- From: "James K. Lowden" <jklowden AT schemamania.org>
- To: TDS Development Group <freetds AT lists.ibiblio.org>
- Subject: Re: [freetds] 0.62rc3 + Sybase ASA: good except tsql - here's a patch
- Date: Thu, 8 Jan 2004 23:44:26 -0500
On Thu, 8 Jan 2004, L J Bayuk <ljb220 AT mindspring.com> wrote:
> [Sorry - I didn't mean to wait until just before release, but my last 2
> tries at posting this went nowhere.
Vaporized without a trace?
> I think your mail list server hates me.]
Hate from a machine is really no different than love from a machine. At
least, I can never tell the difference.
> I'm using FreeTDS-0.62rc3 (on Linux/i386) talking to Sybase ASA 8.0.2 on
> Netware 6. I built FreeTDS with sqsh-2.1 and PHP-4.3.3 (sybase_ct
> extension), both of which work fine. (0.61* was not usable for me with
> ASA.)
(Progress.) :-)
> tsql crashes (segfault) on connecting to ASA.
...
> The crash is in tds/iconv.c when tds_srv_charset_changed() calls
> strcmp(canonic_charset, iconv_info->server_charset.name)
> with canonic_charset==NULL. What happens: tsql sent charset
> "ANSI_X3.4-1968" (I have no clue where it got that)
To answer your question, it got that from nl_langinfo(3).
That's the actual problem, I think. If it's to do anything of the kind,
tsql should request a character set from ASA using Sybase's nomenclature.
In this case, afaik that would be "iso_1".
Thanks for the patch. If we're going to die on a NULL pointer, we should
do it intelligently, with assert(). In this case I agree, it's better to
soldier on. That way, the application can trap the message and adapt.
You do see a message from the server, don't you?
--jkl
> --- src/tds/iconv.c.bak 2003-12-29 11:08:35.000000000 -0500
> +++ src/tds/iconv.c 2004-01-07 08:53:17.000000000 -0500
> @@ -959,6 +959,10 @@
> TDSICONVINFO *iconv_info =
> tds->iconv_info[client2server_chardata]; const char
> *canonic_charset = tds_canonical_charset_name(charset);
>
> + /* ignore request to change to unknown charset */
> + if (!canonic_charset)
> + return;
> +
> if (strcmp(canonic_charset, iconv_info->server_charset.name) ==
> 0)
> return;
-
[freetds] 0.62rc3 + Sybase ASA: good except tsql - here's a patch,
L J Bayuk, 01/08/2004
- Re: [freetds] 0.62rc3 + Sybase ASA: good except tsql - here's a patch, James K. Lowden, 01/08/2004
Archive powered by MHonArc 2.6.24.