From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754048AbbIXUxk (ORCPT ); Thu, 24 Sep 2015 16:53:40 -0400 Received: from mail-bn1on0099.outbound.protection.outlook.com ([157.56.110.99]:13203 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753803AbbIXUxh (ORCPT ); Thu, 24 Sep 2015 16:53:37 -0400 Authentication-Results: spf=fail (sender IP is 66.35.236.236) smtp.mailfrom=opensource.altera.com; zytor.com; dkim=none (message not signed) header.d=none;zytor.com; dmarc=none action=none header.from=opensource.altera.com; Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=atull@opensource.altera.com; Date: Thu, 24 Sep 2015 15:47:26 -0500 From: atull X-X-Sender: atull@linuxheads99 To: Dan Carpenter CC: , , , , , , , , , , , , , , , , , , , , , , , , , Petr Cvek , , , Pavel Machek , , , , , , "Josh Cartwright" , , , Subject: Re: [PATCH v11 3/4] add FPGA manager core In-Reply-To: <20150924074953.GI4953@mwanda> Message-ID: References: <1442935271-10375-1-git-send-email-atull@opensource.altera.com> <1442935271-10375-4-git-send-email-atull@opensource.altera.com> <20150922222929.GA26335@jcartwri.amer.corp.natinst.com> <20150923132354.GB31253@amd> <20150923141106.GH4953@mwanda> <20150924074953.GI4953@mwanda> User-Agent: Alpine 2.02 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" X-Originating-IP: [64.129.157.38] X-ClientProxiedBy: SN1PR0701CA0011.namprd07.prod.outlook.com (25.162.96.21) To BLUPR03MB1506.namprd03.prod.outlook.com (25.163.81.24) X-Microsoft-Exchange-Diagnostics-untrusted: 1;BLUPR03MB1506;2:Frzx6DwD2CBvsCDJM6vEsMKb/DnUmdI5XzwQOfHsAU66ECMK8kCWtyCHrOe0A0dNrhgHvp/vlsmd4lgxdNcUy2l2N6/lv2khKUuhKNw7qus46rU5vPOBWXsr8CcWyA0aHuklttZplcfqojocJw7/SgONnuw/gyIn50iy7mAJgT0=;3:N158QE/6lIL5bIPh9wCkdpGwOF/WJIveHXaKQmiuZ0EfIxRiLEAN2PwXu0AQHsSI/mWkbBs8+pVi1R43R5ksx5C0VC7tTDK9BRZlcxb3axUmJoKbLsPCDK/hACrPiM0tJ2cD5LwfmCoVQP3zQWRTKg==;25:2I8Hq26B2NHaIDRfGAr2c9AbxOE6HxwE7AL91u6JPBVdQ8ywGzgzwwyR3DNWcz2WyZqm1wpwUri2yY9SLkc2wJTTHHLajT+luP427hvChoon2FlQXMepzVCvEd9xTXS6zU38/3edcniHL7HLIsm9Ue/sbiqVSPTjMxRBK0P+1CT818sAgZ/9TGxjleYPTWM3QQk2ATitaODKO/S36I/4zw1UZUn1be8butNgo4bS8If9/P3D0KMihUwEHh/l37hvkQrYt3GBnhSof2WDzkrX0w==;20:7R927ABtVRm1Ofu55gNHLYFe2hKVwckvS8Ev9CyXyut6dJTnRNfbdvWluacaUhCUIqaXeeqqCOb6LHhc+zgPJkNuET/AK79mNa8UUecSf/imfNGxcImfTmg+1MvbJr6dMKOYt5PE81quV7QN+kCGfkkStqaO9h4Fs7D6mkXZF3g= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB1506;UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB1492; X-LD-Processed: fbd72e03-d4a5-4110-adce-614d51f2077a,ExtAddr,ExtAddr X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:;UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(520078)(8121501046)(3002001);SRVR:BLUPR03MB1506;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB1506;BCL:0;PCL:0;RULEID:(601004)(2401047)(8121501046)(520078)(5005006)(3002001);SRVR:BLUPR03MB1492;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB1492; X-Microsoft-Exchange-Diagnostics-untrusted: 1;BLUPR03MB1506;4:OfG9hCpcXXRLnCyyYXkI2+znqbBkLRwLqIToOnWCsdrO1eFwvOq0rHwcG9hgCly4k83syyWj6hy2tTUpCCmjoayoJE5CjAubFRcwlHJXLo28t53jCVi2hphIQ3KuRHXPDvLoHmU20ZnsMvLj95MMJ8GUMIN1w8qljJIW9uebIjq5WAzOt5zXvbrutu2M/mYdKGRdYDL8yrX7ejYwzU+HlseO3WhoYpfiucY7gRL8m6Wdjq9OrSprn2DmQfrUDHWf9qcyB4lY+uDbcaPmdMt8HI1OOy+eFbbxgynGsxdK0Dp7eUXBvd76eSjPW3GhLYyMBdkZnw/9abOk1DGXTiodIcwn9qvVpP5UJ7bKS4myY9s= X-Forefront-PRVS: 070912876F X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(6009001)(189002)(24454002)(51914003)(199003)(97736004)(4001540100001)(83506001)(93886004)(40100003)(33716001)(101416001)(50466002)(46102003)(54356999)(2950100001)(92566002)(47776003)(23726002)(5007970100001)(5001830100001)(69596002)(4001350100001)(87976001)(86152002)(110136002)(64706001)(76176999)(46406003)(66066001)(62966003)(5001860100001)(68736005)(77156002)(86362001)(105586002)(81156007)(5004730100002)(106356001)(189998001)(5001960100002)(77096005)(42186005)(122386002)(50986999)(53416004)(7059030);DIR:OUT;SFP:1101;SCL:1;SRVR:BLUPR03MB1506;H:linuxheads99.altera.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:0;LANG:en; X-Microsoft-Exchange-Diagnostics-untrusted: =?us-ascii?Q?1;BLUPR03MB1506;23:diToJ1gtgFqZiJh2LXN05PRkSAbn7I1LtnUcfdx/T?= =?us-ascii?Q?R/Yr7lz+6gh25bT8f/5i/DwzneiMM9SzSr1MJLEwFQCU7InnxqR9fy3k8Yjj?= =?us-ascii?Q?UpQ9uIHe6jOIQ/PemblhyWedrY9N8LDbYVCBcNDaTuF7W8F5Zn6VrWMUaWD6?= =?us-ascii?Q?8TNzKETjk2zKyBD6IYkx5u8tDxV7+fvGgVv0zC2iZlXdRYM9cCM/WsPzv+TU?= =?us-ascii?Q?U2ihu1nCtNWlyx+hME8JHPAhMmHKuKZlNajYblNZYpTLGdFsRWPwCmU6nAuz?= =?us-ascii?Q?966BHkRLthtvCOOH/C3ZSVQt/2maTmURRdSP1sF+fgiaLl8DE7Bl76ni9tql?= =?us-ascii?Q?HPJFx3mO6gplG5sE2c8N9XmxxiSQhVH1iip/f4bo1tRo595loiCxhnx0HgTG?= =?us-ascii?Q?vzFyASBWGd/sxErWKEdehi0fOpYUKWfuLPTnu+D6LBQOHPTXrXTPje0Du9Fr?= =?us-ascii?Q?vRVmcwWSpk9+OBMnAwTH2BN6k6rVT8SnWUELSiFCWtyMsb3claKDRagmcXMj?= =?us-ascii?Q?aNNF784o47QhFk7if232y8k2Di5FoYE6/jesc4bprUzrVtmiWIRYtNsFyFyZ?= =?us-ascii?Q?VJwXRBoMWvIAF3oQTBolwC7BM58dRWEkA8Ds++otxNUJw6ljJrVfJstTmoIh?= =?us-ascii?Q?uOYppEnFvqdFV4qHwbJwoCqcs++oAOlkxsI9PmZyf+LiZHOt/1f/iHyHw/bA?= =?us-ascii?Q?2DL65qsDfzyrliPtJ0gFpH8i4QlJqFIsqMsUD8mQlR7+XPa18w1wUiL9+rgd?= =?us-ascii?Q?5jn6a4fELfDSSH1wyXUPcQDzKT9AY6C/ZqfINNYaGieQ7Rp0nNYpiXVK4STh?= =?us-ascii?Q?82op/CJQWR5mFKLGlkbQISECuDlrx3jW32RCs5Ao8RJU2XkObr0mADN1UAFH?= =?us-ascii?Q?jgSXdMg9Lp4dx/AU/UEWsqfYCtzT0wo4sOXwHdmr6qVS6GHdnFN+LVEhEcxF?= =?us-ascii?Q?oeEPh1bBZQCDZZTZkWi3ILCHEGmtC9AXezJ1brEF4GEzFwde5sf6FVdDCVFj?= =?us-ascii?Q?+xAnfed1Q9LdzFu3GST6CqOBxEeemYeHirq8VXRwYwlj5Ases/0D/jeSym6S?= =?us-ascii?Q?I1LTb04HmxLnYbvCrbKyRB2AfHHQTY6KFB9sT43MHTNL5we8h2wGtojtTgT3?= =?us-ascii?Q?n0DtNVuYRvp+LxjtlBZNBopRl6DMRtWMGVgVjS1b+BdVIyVHTFkA//0LzseL?= =?us-ascii?Q?lDnMHebRebumYtJC12H1RG1tS8SPg4lLi3BDb/X2BcqgVjZKw1ACgTSMLgS+?= =?us-ascii?Q?9WhEFiPBrK5QKrbCpE=3D?= X-Microsoft-Exchange-Diagnostics-untrusted: 1;BLUPR03MB1506;5:JT4bo5cWbkqp16xmH11eYodKKMt+5ozCxXX7QgYrsEONBlVTUc43UQ4ONEtDUF22qS1nvhAvLf8kGyx6+/LG1OyOddQN37CsQMDhOtq4cjrbrUTdBNC4rS6g0mbAX7Q+wKDA0iDc4LO+//ftdXnPYQ==;24:5RoRtn7bEP+KgbqwJkDdqCK4rFVFR10kC1i1U51jW6rOCMDAe614lDd2/H3weZlhcIq/tM/gclVeb3jdtE58yI+yZxMEfQlfLrG26Dndb6o=;20:WwhMntO4IZt8IvJC0FwHfugc2imbCooUcfDWYZvvm8b4jxy+IzB/GSwz8rH66T1Eki17Rv7v+TdqyFs9ERG08G9OSPYfT5J2bBAOOnZyEYXkDGhLuglxjrfTAJ4gaurpHUH7h5gReC/O/qQRXLkyofWalwR1F2ycaNts3KB2Io4= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR03MB1506 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: BL2FFO11FD008.protection.gbl X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11FD008;1:v5J58ukXvq+ONZSDvs0d8GaLG8PrV92LQISljm039PEG+wRyUyrnugEOH5c5Zeqb5OqqJjEZVzy36/THC1H8jsjyUsrhDy/asGP+YCpVXNc6qKnmbjWPqqKQK1JNZWbTELddZO178Iu7tjuBY7q7b2pr4gqRyxxOWXst9iEgmnen2z3iUtiHAXYlDqzsfNex7GNbKZFDupFetknx/MCj61uukPvEDstLdERxAo32BZ5Md7dU834WKglo8olRR5OF4fhEOs/Otg3N5C39QXweKkHH+ulQZuAmGStK7Yomd06Iba79MQjcxmiXWxjtry2dDATJ/DN+HwMi13SEpfdlxq0h3bZpDb6u2IPTiVzjOSNRiWFS+UWVv79Gi8+QnC3j9OpozshbbYseo3cpWAXkUw== X-Forefront-Antispam-Report: CIP:66.35.236.236;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(1110001)(1109001)(339900001)(51914003)(24454002)(199003)(189002)(122386002)(50986999)(2950100001)(189998001)(21840400001)(40100003)(46406003)(11100500001)(85426001)(92566002)(110136002)(5001960100002)(106466001)(4001540100001)(4001350100001)(97736004)(62966003)(68736005)(77156002)(5001860100001)(5001830100001)(6070500001)(81156007)(77096005)(23726002)(5004730100002)(5007970100001)(86152002)(76176999)(93886004)(105606002)(16796002)(86362001)(64706001)(54356999)(47776003)(83506001)(46102003)(50466002)(53416004)(33716001)(87936001)(6806005)(66066001)(7099028)(7059030);DIR:OUT;SFP:1101;SCL:1;SRVR:BLUPR03MB1492;H:sj-itexedge04.altera.priv.altera.com;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;A:0;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB1492;2:wSJXaB6P9HL0f6lqtg/gER6d6XroKNibAGxzoQ4hQmlLJirsqohg9bKsXt9lC3fH2Qsk5ZD7ltCraeXGH8w3OqBaULaZPsM0xo7OdB12PJozvQkefaSQv7MTyN4d1WI/CyzKVoLtIMYZanjDol+ROvaS3KuhhEZMvNAEfcOdhAQ=;3:UNGaiMDSQHdWolonxJyJDQMFY4JOZ2LjbXzz2iNBGkmDd2/ZdcLbi/W1kndjYKd+a4FsvvHDc2FHckl6gbxE+N9oo5tTAR2vIpT7vF8iXivg8LEct6yVcoR2gqD5ST1Ft/Gt1OIp3AHb+4KAT2LkOEJNSB9swCL6b2meV/7gRcWuVIM3jTdFnGvyphkTDLVKxYN72shNgb1ySoWnBVqpBlrHfMFBDdrJL/MUtn9KIMI=;25:aol3KZyfkWJ8YuNyjVfcuP3RT1d6q8cqj3aBBSimYPBvvefZIECqJVQklv8rsMVrJti8K26yMGmlelIi4F7/4QR+4V1m3tI/K8lL3SQ95fdyKVLJMLmN/K8H5SeCcW0t8F7CKPRQIccNqS3Oskcbx9p3aJRu/E0QC/1epV5UYTRwe2CZ5+Rbz9+8X5FJAZnP1n+qJO/muCBNGIPKxIz4VtMVQfwBvI5xO3iW7XL2dkI6abX0tu/dGxPgvqNjHKrnjBSySjTnRGA+PBE+PrBBMA==;20:ujUOtQh4UbH62yyc7P2buXbCMiS5pDt1sW5wrw/lKdezvnRaPWY2ctyLvG8inCu4C3j+PHEiEGib5HM2RUwDPl7RGmYiTMcbu2i+7j6wri5tUJHw1RZDVvzMVGOkmOQrjdLi67Z5bBwtni0XBCCeAl8SFHvjskkqjcmwBVmZ6MI= X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB1492;4:hl9Yd5K1fVePNqMJXo7rb8reiJjUR324PlObFwMinRS9lgUR5y8+GuJAtB9louXNyH3MHR9VynxbtDiZM+NKj+/azEZx4bulAsRm7CsXIg8NOzxOeAOoMdfs6vviVDWrPDd40dcZXVjKwIp0wPj4eprXk+8rAO16yeQ8e+CJolfDWZC+hQ2a+h0qYVOJsBI2yzrFeM3nasgsU0F9BfS8VNWyZq2sdPFHkg0z9BVTgk8pQgM5bBSD3v4p+5m92hrGopn2o5/4zx1ueD7T6i9TDh5k4bcA4w8htyBFvvF5oF5X8LUpVjQu1mnciTwqryaYdpdayUf9oJfxSVqWEcSZVgXu7E6TZRYkBOnk2I9qQD8= X-Forefront-PRVS: 070912876F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BLUPR03MB1492;23:Paf3Gb+ptMW66bfbN7YNg+kymCavODG+RhUwQ+yh9?= =?us-ascii?Q?5L7TXLTPLKHPINMmF2I+VRY3J7wGV70v3v861w92D7BVDbT11nJRaeSAS4+8?= =?us-ascii?Q?qN1qji+PxqCX0saVEuWD6haPi2Mez1Dq/8rVzgAzbLcOxU/QPD7bBuXPqQHN?= =?us-ascii?Q?17T3DkISBBWh195V9o/PtxAz7zrlYo2DDJ5Hci9lIO+eZPiLDcV7hTEnm3s3?= =?us-ascii?Q?7XxaZTbRTSTZ7xt0J4RL/c/uGXr9rZUk6kLGFZHurjyymww4K8tUcHlHeKGU?= =?us-ascii?Q?IsbeCogzRSZTl9RQd1hkY5OWL5D4645DsOf5Fv0Rwj6aM+YsvVlVDjEWZI7+?= =?us-ascii?Q?yITIGK6+JVje4obfIInkIPNdRf+F2kO4Y0jYCm90pWnZxIZx23vbgUUjlC9P?= =?us-ascii?Q?OcqwC9WQs/3f9Oxj+zEmN5elQKvVUqc/Mod2gurI7P0eGiaP67A/RYzVrMzz?= =?us-ascii?Q?s5HmfKP3zoVm/oqBWOE/LBaNEcKWBT6wjyatTo50FSxEEZaDNyJPOU0Skd20?= =?us-ascii?Q?0Oeq9E2xUV/hXGtiVjueh0qRJfYpX/MmkDHB3+wgyQSJsEgcepMwqtCIHxAP?= =?us-ascii?Q?MX9O0uFmec/OCe9f69So/4oGKpQ8cdbh7JRorCa695nfAXu48iB3jgiiatmp?= =?us-ascii?Q?V7Bc/KswvEYiR0tMbXAYwGWBncRzo0/CFQfnXkHZ8gzz4gtU/WvCFeGOIrQL?= =?us-ascii?Q?nXMXd460JaQshwVo9lDt/IEhUcP8AhXNhxygCLzeaM5hSb+LICCv94S5K8EI?= =?us-ascii?Q?wjVovk2YIOdTJLM+OjWQgYKhj+PpdlTV4loK+FjMOIUvT2eZQCeK7eFu173p?= =?us-ascii?Q?69Dc0LtnYNDWPIpm9jAOv421taYk+xrsyRXboYgZEHQCgj6MMQmIdKTrVR5m?= =?us-ascii?Q?sb0YN4lpZJKZAgKg6HGndlaFJ7CDBMQ+XqrI5cwd/d5zmSk8lNhUSSSVPc3R?= =?us-ascii?Q?3WGlgt+gHHgM7KWtzoZkGDgT/Jm9i6UNjdRLmmyUEmjs8OV7XLvW/+zoZ0Qo?= =?us-ascii?Q?+mMzW80G5HPuA8QVdExa/IjXhdVS/7CnVrwyWRyGwyRMoSjb3FHMzpg/ar5T?= =?us-ascii?Q?4Jy+qNu1I3jONkzyJkPq8qBy1J/q6zGqL1aqFI8Vwi0XgQm2afHCafyGlLt5?= =?us-ascii?Q?rEBmRgsXF43VJGXkNJFLu/qwM7II2ClobNzM92PMCe6RzwPOjNOw7zqXT5+v?= =?us-ascii?Q?RfEydaSxHQDfELw25tnTwKgNSM35XCVlkiyExL2/GXZowh3D8fS4HMBHUOOV?= =?us-ascii?Q?vDx6ySUlPrJZ/4G7EX4DTwP8UAkpjMn1GuBwtCwroyh9bkJLaFKZt7cEtKnF?= =?us-ascii?Q?kkIZk3ji0DBlvSzlP4DcMnxxyIi+kfq9sivsf4ctsY3ccYgi4IOoRDw1odeC?= =?us-ascii?Q?N32y9L+uYgC0VYAizTaavROo4sqBvSM2865Tr5LRVIy1c2/kym2p0gLIZU57?= =?us-ascii?Q?90zjiYdbkOGxZRCK7GOHpFDFjZBfFQ=3D?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB1492;5:sccieI0W4m1xKD7mrkkaQK9EPrRSWMbFQ/nBuwr7D3W5wV3MoeAVEH2Kb75BWj961mkLWrubeOF00uQBW1X5Ri6UfzuVoLcwAU24/qnMd7u8fVFtYdunNJAqfAC0t8vAjTVjqATxsfM0KXtfPwFpXQ==;24:+zNM5FWjvYeDW6wZV/dKINgkCCxvGbDzinTZLkyfVTz3GFOnSlEmJYJbzDjqIoNMrprISEztWLxte60QSoHBRqdhwXdzONNptMBs6V8M07c=;20:wvJQptaWx51smxkfw1eHzJ6GVwYLY5l5Z8Gupb0V1AQJ3qbfnceAwmgNG+WLZhXu/kDO83OtLSfdKebwCHkjobbMDUPe1MCvaOlp195DrfDxE44B5QtHRgC1TrRnP1DGD8NtLEmADTJqQNcEyREjSpr0h6y6cC2u5eQCHLvUrbM= X-OriginatorOrg: opensource.altera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Sep 2015 20:53:34.0144 (UTC) X-MS-Exchange-CrossTenant-Id: fbd72e03-d4a5-4110-adce-614d51f2077a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=fbd72e03-d4a5-4110-adce-614d51f2077a;Ip=[66.35.236.236];Helo=[sj-itexedge04.altera.priv.altera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR03MB1492 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 24 Sep 2015, Dan Carpenter wrote: > Of course, the maintainer gets the last word regardless of what anyone > else thinks. > > Generally, minimal code is better. Trying to future proof code is a > waste of time because you can't predict what will happen in the future. > It's way more likely that some pointer you never expected to be NULL > will be NULL instead of the few checked at the beginning of a function. > Adding useless code uses RAM and makes the function slower. It's a bit > confusing for users as well because they will wonder when the NULL check > is used. A lot of times this sort of error handling is a bit fake and > what I mean is that it looks correct but the system will just crash in a > later function. > > Also especially with a simple NULL dereferences like this theoretical > one, it's better to just get the oops. It kills the module but you get > a good message in the log and it's normally straight forward to debug. > > We spent a surprising amount of time discussing useless code. I made > someone redo a patch yesterday because they had incomplete error > handling for a situation which could never happen. > > regards, > dan carpenter > > Thanks for the discussion. Interesting. The amount of code bloat here compiles down to about two machine instructions (in two places). Actually a little more since I should be using IS_ERR_OR_NULL. But the main question is whether I should do it at all. The behaviour I should drive here is that the user will do their own error checking. After they get a pointer to a FPGA manager using of_fpga_mgr_get(), they should check it and not assume that fpga_mgr_firmware_load() will do it for them, i.e. mgr = of_fpga_mgr_get(mgr_node); if (IS_ERR(mgr)) return PTR_ERR(mgr); fpga_mgr_firmware_load(mgr, flags, path); I could take out these NULL pointer checks and it won't hurt anything unless someone is just using the functions badly, in which case: kablooey. Alan