Solved

NPAPI plugin fopen failing

Posted on 2014-02-11
4
424 Views
Last Modified: 2014-02-16
Hi Experts,

I've got an NPAPI plugin that calls the following:

FILE * f = fopen("c:\\test.txt", "r");

I'm getting a bad pointer.  Is there something wrong with calling fopen from a plugin??

Thanks,
Mike
0
Comment
Question by:thready
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
4 Comments
 
LVL 86

Accepted Solution

by:
jkr earned 167 total points
ID: 39851826
Technically not. But, you might hit a permission problem with files stored in the root directory of the system drive. Furthermore, checking the return value is always a good idea, since 'fopen()' (http://msdn.microsoft.com/en-us/library/yeby3zcb.aspx) returns NULL when it encouters a problem. E.g.

FILE * f = fopen("c:\\test.txt", "r");

if (!f) {

  // check error code in 'errno' (http://msdn.microsoft.com/en-us/library/t3ayayh1.aspx)
}

Open in new window

0
 
LVL 34

Assisted Solution

by:sarabande
sarabande earned 167 total points
ID: 39853395
to add to before comment:


I'm getting a bad pointer
as explained by jkr the return value is NULL in case of failure. the debugger may name that a 'bad pointer' but actually a NULL pointer is not 'bad' itself but only if you expect a valid pointer to be returned by a function. a non-zero pointer should always be a valid file pointer.

the errno can be checked by including <errno.h> and code like

char szerr[1024] = { '\0' };
if (f == NULL)
{
    switch (errno)
    {
            case 2: strcpy(szerr, "file not found"); break;
            case 3: strcpy(szerr, "path not found"); break;
            case 4: strcpy(szerr, "too many open files"); break;
            case 5: strcpy(szerr, "access denied"); break;

Open in new window


a complete list of all error codes could be found in winerror.h but the 4 error codes handled in the sample are the most likely ones after fopen.

Sara
0
 
LVL 9

Assisted Solution

by:Subrat (C++ windows/Linux)
Subrat (C++ windows/Linux) earned 166 total points
ID: 39855088
Including to the above comments....
We can use ::GetLastError() win32 API to get the error code.
0
 
LVL 1

Author Closing Comment

by:thready
ID: 39863537
Thanks everyone
0

Featured Post

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Google Analytics 5 181
Is online banking safe? 11 127
ow do I browse the internet secretly? 6 97
Secure Website 5 40
Introduction If you're like most people, you have occasionally made a typographical error when you're entering information into an online form.  And to your consternation, the browser remembers the error, and offers to autocomplete your future entr…
In this article you will learn how to create a free basic website on Bitbucket, a git service provider. Polymer creates dynamic HTML components, which allow more flexibility than static HTML. This tutorial uses Ubuntu Linux but can also be done on W…
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.
Shows how to create a shortcut to site-search Experts Exchange using Google in the Chrome browser. This eliminates the need to type out site:experts-exchange.com whenever you want to search the site. Launch the Search Engine Menu: In chrome, via you…

752 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question